Отключить добавление ajax в корзину для первого элемента и пользовательское перенаправление на Woocommerce - PullRequest
0 голосов
/ 05 декабря 2018

Привет! Я работаю на сайте WOOCOMMERCE и пытаюсь перенаправить пользователя на пользовательскую страницу, когда пользователь пытается добавить свой первый товар в корзину.

Перенаправление должно выполняться только для первого товара в корзине.

Когда пользователь добавляет в корзину два или более товара, тогда должен работать обычный ajax add в корзину.

Сначала я попытался перенаправить на пользовательскую страницу для первого продукта с помощью функции ниже

function my_custom_add_to_cart_redirect( $url ) {  
    if (WC()->cart->get_cart_contents_count() == 0)
    $url = get_permalink( 1172 ); /* ID of the page is entered */
    return $url;
    }
add_filter( 'woocommerce_add_to_cart_redirect', 'my_custom_add_to_cart_redirect' );

Приведенный выше код перенаправляет на пользовательскую страницу, но это происходит для всех добавлений продукта в корзину.

Более того, оно не работает, если в настройках WOOCommerce поле «Перенаправить на страницу корзины после успешного добавления» не отмечено.

Может кто-нибудь помочь мне с правильным подходом?

1 Ответ

0 голосов
/ 05 декабря 2018

Вам нужен дополнительный код, чтобы отключить добавление в корзину, когда корзина пуста, и немного изменить свой код:

// Replacing the ajax add to cart button by a link to the product when cart is empty
add_filter( 'woocommerce_loop_add_to_cart_link', 'replace_loop_add_to_cart_button', 10, 2 );
function replace_loop_add_to_cart_button( $button, $product  ) {
    if( WC()->cart->is_empty() && $product->is_type('simple') ){
        $button_text = __( "View product", "woocommerce" );
        $button = '<a class="button product_type_simple" href="' . $product->get_permalink() . '">' . $button_text . '</a>';
    }
    return $button;
}

// Custom Redirect on first added to cart only
add_filter( 'woocommerce_add_to_cart_redirect', 'custom_add_to_cart_redirect_on_first_item' );
function custom_add_to_cart_redirect_on_first_item( $url ) {
    // Redirect on first added item
    if ( WC()->cart->get_cart_contents_count() == 1 ) {
        return get_permalink( 1172 ); // ID of the page
    }
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы)).Проверено и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...