在WooCommerce购物车页面中哪个Hook可以改变数量更新?

时间:2018-03-07 09:12:22

标签: php wordpress woocommerce cart product-quantity

我试图在购物车中更改产品数量时触发功能。 更具体地说,当客户修改购物车中的金额时,我想运行此功能。

我希望找到购物车中剩余的金额,然后拦截更新购物车事件

目前我正在使用:

add_action( 'woocommerce_remove_cart_item', 'my function');

当我按下" update_cart"时,它似乎无法正常工作。 有什么建议? 谢谢!

2 个答案:

答案 0 :(得分:2)

您应该使用 4个参数woocommerce_after_cart_item_quantity_update action hook。但是当数量变为零时,需要使用woocommerce_before_cart_item_quantity_zero action hook而不是(并且有2个参数)

下面是一个工作示例,它会将更新的数量限制为一定数量,并会显示自定义通知:

add_action( 'woocommerce_after_cart_item_quantity_update', 'limit_cart_item_quantity', 20, 4 );
function limit_cart_item_quantity( $cart_item_key, $quantity, $old_quantity, $cart ){
    if( ! is_cart() ) return; // Only on cart page

    // Here the quantity limit
    $limit = 5;

    if( $quantity > $limit ){
        // Change the quantity to the limit allowed
        $cart->cart_contents[ $cart_item_key ]['quantity'] = $limit;
        // Add a custom notice
        wc_add_notice( __('Quantity limit reached for this item'), 'notice' );
    }
}

此代码位于您的活动子主题(或主题)的function.php文件中。经过测试和工作。

  

由于此挂钩位于WC_Cart set_quantity() method无法在挂钩内使用该方法,因为它会抛出错误

当数量设置为零时触发某些操作:

add_action( 'woocommerce_before_cart_item_quantity_zero', 'action_before_cart_item_quantity_zero', 20, 4 );
function action_before_cart_item_quantity_zero( $cart_item_key, $cart ){
    // Your code goes here
}

答案 1 :(得分:1)

也许这个钩子? do_action( 'woocommerce_after_cart_item_quantity_update', $cart_item_key, $quantity, $old_quantity );

http://hookr.io/actions/woocommerce_after_cart_item_quantity_update/