Перенаправление woocommerce на кассу не работает

Я добавил продукт в корзину программно, а затем хочу перенаправить пользователя на страницу оформления заказа и пропустить страницу продукта и страницу корзины. Продукт успешно добавлен, но он не переходит на страницу оформления заказа и отображает пустую страницу без ошибок. Это происходит только тогда, когда я очищаю кэш браузера. второй раз работает нормально. Пользователь приходит по пользовательской ссылке на страницу продукта. Я хочу, чтобы, когда пользователь находится на странице продукта, продукт автоматически добавлялся, а пользователь должен быть перенаправлен на страницу оформления заказа. Вот мой код

add_action('template_redirect','redirect_if_cart_loaded', 10, 2);
  function redirect_if_cart_loaded(){
    global $woocommerce;
  if(is_product() && sizeof( $woocommerce->cart->cart_contents ) == 0){

    echo $pooduct_id = get_the_ID();

    //check if product already in cart
    if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
     $woocommerce->cart->empty_cart();
}
    // if product not found, add it

        WC()->cart->add_to_cart( $pooduct_id );
        echo sizeof( WC()->cart->get_cart() ); // this gives 1. means product is added
    if ( sizeof( WC()->cart->get_cart() ) > 0 ) {
     wp_redirect( WC()->cart->get_checkout_url() );
     exit;
}


    }
  }

person Rizwi    schedule 09.10.2018    source источник
comment
Какую версию woocommerce вы используете?   -  person Cedric    schedule 09.10.2018
comment
Если у вас есть пустая страница, вы можете посмотреть свои журналы ошибок apache/ngninx/php, вы, вероятно, где-то увидите фатальную ошибку php.   -  person Cedric    schedule 09.10.2018
comment
каков результат echo WC()-›cart-›get_checkout_url() ; ? Это может быть пустая строка; и ваш редирект даже не будет использоваться   -  person Cedric    schedule 09.10.2018
comment
есть ли успехи в вашем развитии?   -  person Cedric    schedule 10.10.2018
comment
эта функция печатает URL-адрес страницы оформления заказа. Однако ваше решение сработало @ced   -  person Rizwi    schedule 10.10.2018
comment
но он не работает с wc_get_checkout_url(), он работает с get_checkout_url()   -  person Rizwi    schedule 10.10.2018
comment
Если вы используете Woocommerce 2, используйте get_checkout_url. Если вы используете Woocommerce 3; рекомендуется использовать wc_get_checkout_url , docs.woocommerce.com/wc-apidocs /   -  person Cedric    schedule 10.10.2018
comment
Но то, что работает для вас, работает для вас :)   -  person Cedric    schedule 10.10.2018
comment
спасибо @Седрик. У меня другая проблема с woocommerce. Надеюсь, вы можете мне помочь. Как получить значение полей оплаты полосы woocommerce через jquery, когда я нажимаю кнопку завершения оплаты? Помните, что форма платежного шлюза WooCommerce Stipe встроена в iframe. Должен ли я создать новый билет для вас?   -  person Rizwi    schedule 11.10.2018
comment
Лучший способ получить быстрый ответ — создать новый «Вопрос»/тикет :)   -  person Cedric    schedule 11.10.2018
comment
Вы можете проверить этот вопрос, пожалуйста? stackoverflow.com/questions/52764202/   -  person Rizwi    schedule 11.10.2018


Ответы (1)


Использовать

if ( !function_exists( 'wc_get_checkout_url' ) ) { 
    require_once '/includes/wc-core-functions.php'; 
} 

$result = wc_get_checkout_url(); 

используйте wc_get_checkout_url вместо get_checkout_url, так как get_checkout_url устарел

person Cedric    schedule 09.10.2018