Перенаправить из корзины на кассу автоматически после обновления корзины - PullRequest
2 голосов
/ 06 января 2020

На моей странице корзины Woocommerce я хотел бы автоматически перенаправлять пользователей на страницу оформления заказа, когда они нажимают кнопку «Обновить корзину» после завершения выполнения функции update_cart_action ().

Последние строки дескриптор функции W C update_cart_action () перенаправляет:

if ( ! empty( $_POST['proceed'] ) ) {
    wp_safe_redirect( wc_get_checkout_url() );
    exit;
} elseif ( $cart_updated ) {
    wc_add_notice( __( 'Cart updated.', 'woocommerce' ), apply_filters( 'woocommerce_cart_updated_notice_type', 'success' ) );
    $referer = remove_query_arg( array( 'remove_coupon', 'add-to-cart' ), ( wp_get_referer() ? wp_get_referer() : wc_get_cart_url() ) );
    wp_safe_redirect( $referer );
    exit;
}

Я попытался присвоить значение $ _POST ['continue'] для вызова wc_get_checkout_url (), например:

function mytheme_trigger_proceed_to_checkout( $cart_updated ) {

    $_POST['proceed'] = true;

    return $cart_updated;
}
add_filter( 'woocommerce_update_cart_action_cart_updated', 'mytheme_trigger_proceed_to_checkout', 10, 1 );

Но вместо того, чтобы перенаправить на мой URL-адрес оформления заказа, я перенаправлен на URL-адрес корзины с пустой страницей. Редактирование кода плагина W C напрямую дало тот же результат.

Как я могу перенаправить на URL оформления заказа после завершения обновления корзины?

Ответы [ 2 ]

1 голос
/ 06 января 2020

Добавьте следующий фрагмент кода в функции вашей активной темы. php для выполнения вышеприведенного -

add_action( 'wp_footer', 'wc_modify_update_cart_totals' );
function wc_modify_update_cart_totals() {
    ?>
    <script type="text/javascript">
        (function( $ ) { 
            $( document ).on( 'updated_cart_totals', function( event ) { 
                window.location.href = '<?php echo wc_get_checkout_url(); ?>';
            } );
        } )( jQuery );
    </script>
    <?php
}
1 голос
/ 06 января 2020

У меня пока нет точного кода, но в прошлом я делал нечто подобное.

Попробуйте нажать что-то вроде ниже на $ cart_updated

function my_custom_add_to_cart_redirect( $url ) {
    $url = WC()->cart->get_checkout_url();
    // $url = wc_get_checkout_url(); // since WC 2.5.0
    return $url;
}
add_filter( 'woocommerce_add_to_cart_redirect', 'my_custom_add_to_cart_redirect' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...