隐藏添加到购物车按钮,并在Woocommerce中添加自定义内容



我使用woocommerce_after_add_to_cart_button添加了一个"立即自定义"按钮和"添加到购物车"按钮之后的几个下拉列表。

但是现在,当我尝试使用woocommerce_is_purchasable隐藏"添加到购物车"按钮(对于我的网站需要的特定情况,我必须这样做)时,"立即自定义"按钮和下拉菜单也被隐藏了。是否有任何适当的顺序/顺序来执行此操作?

筛选以添加"自定义"按钮和下拉列表:

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

由于添加到购物车模板显示条件为:

if ( ! $product->is_purchasable() ) {
return;
}

2种方式:

1) 代替woocommerce_single_product_summary钩子,优先级在3040之间

add_action('woocommerce_single_product_summary', array($this, 'pn_get_calc_and_customize_btn'), 35 );

然后,您的函数输出代码应嵌入到自定义<form>中,您将需要添加更多代码以将数据保存在购物车或其他地方......


2)要删除购物车按钮,请使用过滤器钩子而不是woocommerce_is_purchasablewoocommerce_product_is_in_stock因此您也必须更改一些钩子函数代码...

add_filter('woocommerce_product_is_in_stock', array($this, 'pn_hide_add_to_cart_button'), 10, 2);

我在这里有两个建议:

第一个是尝试将优先级也添加到您的add_action()中。根据文档,数字越小,执行越早。我会尝试为add_action()添加更高的优先级,并尝试强制在过滤器之后执行woocommerce_after_add_to_cart_button。但是,我不知道删除按钮是否也会抑制过滤器(可能是)。

我可能遇到的另一个建议是覆盖页面的默认模板(我不知道您是在编辑商店页面还是single_product页面),并在那里登录一些if{}else{}以根据情况显示隐藏按钮。

我不知道这些解决方案是否对你有好处,但这只是我的强硬,我将如何解决它。

希望它以任何方式有所帮助

最新更新