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

求助:WooCommerce带变体产品自定义Backorder Message重复显示问题

解决WooCommerce变体产品自定义缺货消息重复显示的问题

问题根源

  1. the_field使用错误:the_field()会直接输出内容而非返回值,导致alt_message函数无法正确返回消息,反而提前输出引发重复。
  2. 变体钩子触发逻辑:woocommerce_get_availability钩子会为每个变体单独触发,若未区分父产品与变体,会导致每个变体都输出一次消息。
  3. 未关联父产品字段:自定义缺货消息通常绑定在父产品上,变体需继承父产品的消息,而非单独处理。

修正后的代码

// 获取父产品的自定义缺货消息
function get_custom_backorder_message( $product ) {
    // 若为变体产品,获取对应的父产品对象
    $target_product = $product->is_type('variation') ? wc_get_product( $product->get_parent_id() ) : $product;
    
    // 使用get_field返回字段值,替代直接输出的the_field
    return get_field('backorder_message', $target_product->get_id());
}

// 修改产品页面的缺货提示文本
function custom_backorder_text( $availability, $product ) {
    $alt_message = get_custom_backorder_message( $product );
    
    // 仅当自定义消息存在时,替换默认缺货文本
    if ( !empty($alt_message) && strpos($availability['availability'], 'Available on backorder') !== false ) {
        $availability['availability'] = str_replace('Available on backorder', $alt_message, $availability['availability']);
    }
    
    return $availability;
}
add_filter('woocommerce_get_availability', 'custom_backorder_text', 10, 2);

// 修改购物车项名称后的缺货提示
function woocommerce_custom_cart_item_name( $_product_title, $cart_item, $cart_item_key ) {
    $product = $cart_item['data'];
    $alt_message = get_custom_backorder_message( $product );
    
    if ( !empty($alt_message) && $product->backorders_require_notification() && $product->is_on_backorder( $cart_item['quantity'] ) ) {
        $_product_title .= ' - ' . esc_html( $alt_message );
    }
    
    return $_product_title;
}
add_filter( 'woocommerce_cart_item_name', 'woocommerce_custom_cart_item_name', 10, 3);

关键修正点

  • 替换the_field为get_field:保证函数返回字段值而非直接输出,修复逻辑错误。
  • 关联父产品字段:自动识别变体产品,读取其对应父产品的ACF字段,确保所有变体共用同一条自定义消息。
  • 优化钩子参数利用:woocommerce_get_availability钩子原本支持传入$product对象,直接用它获取产品信息,避免重复查询。
  • 增加空值判断:仅当自定义消息存在时才执行替换,避免出现空内容或无效替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:48:25