WooCommerce覆盖添加到购物车按钮

时间:2017-11-09 12:26:08

标签: wordpress woocommerce

我是WP新手并在其中编码,所以请原谅我这是一个愚蠢的问题。

我想运行一个函数,当客户点击添加到购物篮按钮时,该函数将返回TRUE或FALSE值。

我的问题是

  1. 如何查看单击添加到购物篮时运行的功能的内容和位置。
  2. 如果有WooCom升级,我如何确保我的工作不会被写过?
  3. 感谢名单

1 个答案:

答案 0 :(得分:1)

如果您是WordPress的新手,您可能不了解钩子。

WordPress挂钩是可以更改默认功能的函数。

所以,回答你的第二个问题 - 如何确保你的代码不会被过度编写,只需在你的主题function.php文件中使用Action和Filter钩子即可。通过这种方式,您可以更新woocommerce插件,而无需担心您的自定义功能会消失。

Woocomerce使用add_to_cart()函数在购物车中添加产品。此函数已有钩子,允许您修改默认功能。有关此功能的更多信息 - link。正如您在Call hooks部分中看到的那样,有六个钩子。我不确定在添加到购物车过程中如何正确返回true或false,因为如果出现错误,add_to_cart()函数会抛出异常错误。

但是如果你尝试使用WordPress钩子,在你的主题function.php文件中,代码应该是这样的

// define the woocommerce_add_to_cart callback 
function action_woocommerce_add_to_cart( $array, $int, $int ) { 
    // make action magic happen here... 
}; 

// add the action 
add_action( 'woocommerce_add_to_cart', 'action_woocommerce_add_to_cart', 10, 3 ); 

你能提供更多信息,为什么要这样做?

'woocommerce_add_to_cart'根据您的情况使用钩子。

// define the woocommerce_add_to_cart callback 
function action_woocommerce_add_to_cart( $cart_item_key, $product_id, $quantity, $variation_id, $variation, $cart_item_data ) { 
    $vendor = get_post_meta( $product_id, 'vendor', true );
    if($vendor === 'something') {
      return false; //you should return (throw new Exception)
    }
}; 

// add the action 
add_action( 'woocommerce_add_to_cart', 'action_woocommerce_add_to_cart', 10, 6 );