#php #wordpress #woocommerce
#php #wordpress #woocommerce
Вопрос:
У меня есть фрагмент кода ниже, который работает там, где он удаляет кнопку «продолжить покупки» после добавления товара в корзину.
add_action( 'woocommerce_after_cart', 'verify_all_products_in_cart' );
function verify_all_products_in_cart() {
$all_products_array = wc_get_products( array( 'return' => 'ids', 'limit' => -1 ) );
$products_in_cart_array = array();
$visible = 'visible';
// Loop over $cart items
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$products_in_cart_array[]=$cart_item['product_id'];
}
if(count($all_products_array) === count($products_in_cart_array)){
$visible = 'hidden';
}
echo '<style>a[name="hpy_cs_continue"]{ visibility:'. $visible .';}</style>';
}
Однако я замечаю, что на веб-сайте есть определенные действия, для выполнения которых мне нужен этот код. Я бы хотел, чтобы приведенная выше функция запускалась, если товар удален из корзины и если пользователь нажимает «отменить» из сообщения woocommerce.
Я попытался добавить перехват действия в приведенный выше код:
add_action( 'woocommerce_cart_item_removed', 'verify_all_products_in_cart' );
Проблема в том, что он удаляет все содержимое корзины, когда я добавляю это. Итак, я не знаю, правильный ли это хук, но в основном проблема в том, как мне запустить function verify_all_products_in_cart()
код, когда товар удаляется из корзины или пользователь нажимает отменить в сообщении woo commerce? В настоящее время код запускается только в том случае, если я добавляю товар в корзину или обновляю страницу.
Ответ №1:
Используйте ‘woocommerce_remove_cart_item’ вместо ‘woocommerce_cart_item_removed’, потому что этот перехват вызывается после удаления товара, поэтому невозможно получить какую-либо информацию о продукте
function verify_all_products_in_cart( $cart_item_key, $cart ) {
// your code goes here
};
add_action( 'woocommerce_remove_cart_item', 'verify_all_products_in_cart', 10, 2 );