如何为指定商品修改Woocommerce Frequently Bought Together按钮文本
解决WooCommerce特定商品的Frequently Bought Together按钮文本修改问题
你已经成功实现了指定商品单个商品页的添加购物车按钮文本修改,但尝试修改对应商品的**Frequently Bought Together(常一起购买)**模块按钮文本的代码未生效,需求是仅当访问指定商品的单个页面时,该页面内的FBT模块按钮文本改为PRE ORDER。
原代码无效原因
- 通过
woocommerce_after_single_product_summary钩子动态添加过滤器的时机过晚,FBT模块大概率已经完成渲染,导致过滤器无法触发。 - 未正确将当前商品的上下文关联到FBT按钮的过滤逻辑中。
正确实现代码
add_filter( 'woocommerce_fbt_add_to_cart_text', 'custom_fbt_add_to_cart_text_for_specific_products', 20, 1 ); function custom_fbt_add_to_cart_text_for_specific_products( $button_text ) { // 获取当前单个商品页的产品对象 global $product; // 定义需要修改的特定商品ID数组 $specific_ids = array(22246, 22241, 22227, 22039, 22009, 22004, 21999, 21991); // 检查当前商品是否在指定ID列表中 if ( isset( $product ) && in_array( $product->get_id(), $specific_ids ) ) { $button_text = __( "PRE ORDER", "woocommerce" ); } return $button_text; }
代码说明
- 直接使用WooCommerce FBT模块的标准过滤器
woocommerce_fbt_add_to_cart_text,设置优先级为20,确保能覆盖默认按钮文本。 - 通过全局变量
$product获取当前单个商品页的产品实例,判断其ID是否在指定数组内。 - 若当前商品属于指定范围,则将FBT模块的按钮文本替换为
PRE ORDER,否则保留原有默认文本。
如果你的FBT模块渲染优先级较高,可尝试将过滤器的优先级调整为30(即把代码中的20改为30),确保过滤器能正确触发。
内容的提问来源于stack exchange,提问作者Irshad Alam
相关产品推荐
相关产品推荐

