Как запустить функцию, если пользователь удаляет товар из корзины?

#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 );