Вы не можете избежать перезагрузки страницы при использовании woocommerce_add_to_cart_validation
ловушки фильтра.
При использовании woocommerce_add_to_cart_validation
ловушки фильтра есть 2 случая:
1) Разрешить добавить в корзину: Вы возвращаете аргумент перехвата фильтра по умолчанию (который true
):
add_filter( 'woocommerce_add_to_cart_validation', 'filter_add_to_cart_validation', 10, 3 );
function filter_add_to_cart_validation( $passed, $product_id, $quantity ) {
$a = 0; // <===
if( $a === 1 ){
$passed false; // Avoiding add to cart
// (Optional) Display a custom eror notice
wc_add_notice( __('Alert message: "add to cart avoided"', 'woocommerce' ), 'error' );
}
return $passed;
}
Для ajax добавить в корзину , товар будет добавлен в корзину (по умолчанию) без перезагрузки.
Для обычное добавление в корзину , продукт будет добавлен в корзину и страница будет перезагружена по умолчанию.
2) Избегатьдобавить в корзину: Условие в операторе IF
совпадает, аргумент ловушки фильтра имеет значение false и возвращается (при желании вы можете отобразить сообщение об ошибке):
add_filter( 'woocommerce_add_to_cart_validation', 'filter_add_to_cart_validation', 10, 3 );
function filter_add_to_cart_validation( $passed, $product_id, $quantity) {
$a = 1;
// Any other value for $a than "1" will allow add to cart
if( $a === 1){
$passed false; // Avoid add to cart
// (Optional) Display a custom eror notice
wc_add_notice( __('Alert message: "add to cart avoided"', 'woocommerce' ), 'error' );
}
return $passed;
}
Для AJAX добавить в корзину , клиент будет перенаправлен на страницу одного продукта (избегая добавления в корзину).
Для обычное добавление в корзину , страница будет перезагружена по умолчанию (избегая добавления в корзину).
Единственно возможный способВо избежание перезагрузки страницы следует использовать пользовательский сценарий (Ajax) jQuery, что означает, что вы должны создать свою собственную функцию проверки.