Как обновить/ запустить пользовательскую функцию после добавления в корзину woocommerce

#php #wordpress #woocommerce #hook-woocommerce #custom-wordpress-pages

Вопрос:

Я обновил страницу списка/архива woocommerce пользовательским шаблоном, чтобы показать варианты продуктов в строке таблицы. у каждого варианта есть своя кнопка «Добавить в корзину». что-то похожее на это: https://ps.w.org/product-variant-table-for-woocommerce/assets/screenshot-4.png?rev=2485475

Я создал функцию, чтобы показать, есть ли эта вариация в корзине, а затем показать количество.

 function product_cart_count( $variation_id ) {
$cat_count = 0;    
// Iterating through each cart item
foreach(WC()->cart->get_cart() as $cart_item){

    $product_in_cart = $cart_item['variation_id'];

    if ( $product_in_cart == $product_id ) {
        $cart_count = $cart_item['quantity'];
        return  $cart_count;
        break;
    }
}}
 

На странице шаблона

 <span class="cart-count"> <?php product_cart_count( $v_id ) ?> </span>
 

Это отлично работает с ajax добавить в корзину

Я хочу знать, как я могу запустить эту product_cart_count() функцию после добавления продукта и обновить количество. Я пробовал woocommerce_add_to_cart_fragments , но это работает неправильно, так как мне нужно отправить идентификатор продукта в параметре.

Комментарии:

1. Вы можете использовать woocommerce_add_to_cart_validation. Вы можете прочитать об этом подробнее — hookr.io/filters/woocommerce_add_to_cart_validation

2. спасибо, Мартин, теперь это работает.

3. Нет проблем, вы, возможно, захотите проверить и это, я забыл упомянуть об этом woocommerce_update_cart_validation, но он сразу не принимает variation_id. Возможно, вам потребуется зациклить товары в корзине. Этот фильтр запускается, например, при обновлении количества на странице корзины