You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为指定商品修改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;
}

代码说明

  1. 直接使用WooCommerce FBT模块的标准过滤器woocommerce_fbt_add_to_cart_text,设置优先级为20,确保能覆盖默认按钮文本。
  2. 通过全局变量$product获取当前单个商品页的产品实例,判断其ID是否在指定数组内。
  3. 若当前商品属于指定范围,则将FBT模块的按钮文本替换为PRE ORDER,否则保留原有默认文本。

如果你的FBT模块渲染优先级较高,可尝试将过滤器的优先级调整为30(即把代码中的20改为30),确保过滤器能正确触发。

内容的提问来源于stack exchange,提问作者Irshad Alam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:30:55