• Прошу помощи. Для проверки статуса текущего заказа мне нужно получить его ID, перепробовал сотню способов из сети, ничего не работает — переменная всегда нулевая.
    Функция следующая:

    add_filter( 'woocommerce_available_payment_gateways' , 'change_payment_gateway', 20, 1);
    
    function change_payment_gateway( $gateways ){
      
    	// Get an instance of the WC_Order object
    	
       $post_id = $post->ID;
    	$order = new WC_Order( $post_id);
    
    	$order_status = $order->status;
    	echo $order_status;
        echo $order_id;
    	if( $order_status == 'pending'  ){
             unset( $gateways['without'] );
        }  else {
             unset( $gateways['shas89_yandex_money'] );
        }
        return $gateways;
    	//$order_status = null;
    	
    }
    
    
Просмотр 1 ответа (всего 1)
  • Модератор Юрій

    (@yube)

    Если Вы уверены, что в момент выполнения этого обработчика в глобальной переменной $post хранится именно текущий заказ, добавьте в функцию global $post;

    И мне кажется, что вместо
    $order = new WC_Order( $post_id);
    надо использовать
    $order = wc_get_order( $post->ID );

Просмотр 1 ответа (всего 1)

Тема «Как получить значение order_id для функции?» закрыта для новых ответов.