在 Woocommerce 中隐藏添加到购物车按钮并在其后添加自定义内容
Hide add to cart button and add custom content after it in Woocommerce
我使用 woocommerce_after_add_to_cart_button
在 'add to cart' 按钮后添加了一个 'Customize Now' 按钮和几个下拉菜单。
但是现在,当我尝试使用 woocommerce_is_purchasable
隐藏 'add to cart' 按钮(我必须针对我的网站需要的特定场景)时,'Customize Now' 按钮和下拉菜单也是隐。有什么合适的 order/sequence 可以做到这一点吗?
过滤器以添加自定义按钮和下拉菜单:
add_action('woocommerce_after_add_to_cart_button', array($this, 'pn_get_calc_and_customize_btn'));
过滤以删除添加到购物车按钮:
add_filter('woocommerce_is_purchasable', array($this, 'pn_hide_add_to_cart_button'), 10, 2);
我这里有两个建议:
第一个是尝试将优先级也添加到您的 add_action()
。根据文档,数字越小,执行越早。我会尝试为 add_action()
添加更高的优先级,并尝试强制 woocommerce_after_add_to_cart_button
在您的过滤器之后执行。但是,我不知道删除按钮是否也会抑制过滤器(可能是)。
我可能有的另一个建议是覆盖页面的默认模板(我不知道你是在编辑商店页面还是 single_product 页面)并有一些 if{}else{}
在那里登录以根据情况显示隐藏按钮。
我不知道这些解决方案中的任何一个是否对您有好处,但这只是我的难题以及我将如何解决它。
希望对您有所帮助
作为购物车模板显示条件为:
if ( ! $product->is_purchasable() ) {
return;
}
2种方式:
1) 改用 woocommerce_single_product_summary
钩子, 优先级在 30
和 40
之间:
add_action('woocommerce_single_product_summary', array($this, 'pn_get_calc_and_customize_btn'), 35 );
那么您的函数输出代码应该嵌入到自定义 <form>
中,您将需要添加更多代码以将数据保存在购物车或其他地方…
2) 要删除购物车按钮,请使用 woocommerce_product_is_in_stock
过滤器钩子而不是 woocommerce_is_purchasable
,因此您也必须稍微更改一下钩子函数代码...
add_filter('woocommerce_product_is_in_stock', array($this, 'pn_hide_add_to_cart_button'), 10, 2);
我使用 woocommerce_after_add_to_cart_button
在 'add to cart' 按钮后添加了一个 'Customize Now' 按钮和几个下拉菜单。
但是现在,当我尝试使用 woocommerce_is_purchasable
隐藏 'add to cart' 按钮(我必须针对我的网站需要的特定场景)时,'Customize Now' 按钮和下拉菜单也是隐。有什么合适的 order/sequence 可以做到这一点吗?
过滤器以添加自定义按钮和下拉菜单:
add_action('woocommerce_after_add_to_cart_button', array($this, 'pn_get_calc_and_customize_btn'));
过滤以删除添加到购物车按钮:
add_filter('woocommerce_is_purchasable', array($this, 'pn_hide_add_to_cart_button'), 10, 2);
我这里有两个建议:
第一个是尝试将优先级也添加到您的 add_action()
。根据文档,数字越小,执行越早。我会尝试为 add_action()
添加更高的优先级,并尝试强制 woocommerce_after_add_to_cart_button
在您的过滤器之后执行。但是,我不知道删除按钮是否也会抑制过滤器(可能是)。
我可能有的另一个建议是覆盖页面的默认模板(我不知道你是在编辑商店页面还是 single_product 页面)并有一些 if{}else{}
在那里登录以根据情况显示隐藏按钮。
我不知道这些解决方案中的任何一个是否对您有好处,但这只是我的难题以及我将如何解决它。
希望对您有所帮助
作为购物车模板显示条件为:
if ( ! $product->is_purchasable() ) {
return;
}
2种方式:
1) 改用 woocommerce_single_product_summary
钩子, 优先级在 30
和 40
之间:
add_action('woocommerce_single_product_summary', array($this, 'pn_get_calc_and_customize_btn'), 35 );
那么您的函数输出代码应该嵌入到自定义 <form>
中,您将需要添加更多代码以将数据保存在购物车或其他地方…
2) 要删除购物车按钮,请使用 woocommerce_product_is_in_stock
过滤器钩子而不是 woocommerce_is_purchasable
,因此您也必须稍微更改一下钩子函数代码...
add_filter('woocommerce_product_is_in_stock', array($this, 'pn_hide_add_to_cart_button'), 10, 2);