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

WordPress(PHP): 价格为空/零时替换Add to Cart按钮文字失败求助

问题分析与修复方案

你的代码不生效核心原因是价格判断逻辑存在偏差:$product->get_price()返回的是数值类型(如0)而非字符串"0.00",同时空值判断的严谨性不足。以下是修正后的可运行代码:

function filter_woocommerce_product_add_to_cart_text( $add_to_cart_text, $product ) {
    // 将产品价格转为浮点型,统一判断标准
    $product_price = (float) $product->get_price();
    
    // 判断价格为空或等于0时替换按钮文字
    if ( empty( $product_price ) || $product_price === 0.00 ) {
        $add_to_cart_text = __( 'Request for quote', 'woocommerce' );
    }

    return $add_to_cart_text;
}
add_filter( 'woocommerce_product_add_to_cart_text', 'filter_woocommerce_product_add_to_cart_text', 10, 2 );
add_filter( 'woocommerce_product_single_add_to_cart_text', 'filter_woocommerce_product_add_to_cart_text', 10, 2 );

关键修正说明

  • 把价格转为float类型,避免字符串与数值比较不匹配的问题
  • 用严格相等判断=== 0.00,确保数值判断的准确性
  • 优化空值判断逻辑,直接针对转换后的数值进行校验

可变产品适配(可选)

如果店铺包含可变产品(Variable Product),需要额外处理变体价格的判断,可添加以下代码:

function filter_variation_add_to_cart_text( $add_to_cart_text, $product ) {
    if ( $product->is_type('variation') ) {
        $variation_price = (float) $product->get_price();
        if ( empty( $variation_price ) || $variation_price === 0.00 ) {
            $add_to_cart_text = __( 'Request for quote', 'woocommerce' );
        }
    }
    return $add_to_cart_text;
}
add_filter( 'woocommerce_product_add_to_cart_text', 'filter_variation_add_to_cart_text', 20, 2 );

设置优先级20是为了确保该函数在之前的通用函数之后执行,覆盖变体产品的按钮文字。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 06:24:25