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

如何限制WooCommerce自定义价格替换代码仅作用于前端?

限制WooCommerce价格替换代码仅作用于前端

要让你的代码只在前端生效、不影响后台商品列表,只需在两个自定义函数开头添加后台环境判断逻辑即可——借助WordPress的is_admin()函数识别后台场景,一旦处于后台就直接返回原始内容,跳过价格替换逻辑。

修改后的完整代码如下:

// Variable and simple product displayed prices
add_filter( 'woocommerce_get_price_html', 'empty_and_zero_price_html', 20, 2 );
function empty_and_zero_price_html( $price, $product ) {
    // 后台直接返回原价格
    if (is_admin()) return $price;
    
    $empty_price = __('Enquire', 'woocommerce');

    if( $product->is_type('variable') )
    {
        $prices = $product->get_variation_prices( true );

        if ( empty( $prices['price'] ) ) {
            return $empty_price;
        } else {
            $min_price     = current( $prices['price'] );
            $max_price     = end( $prices['price'] );
            if ( $min_price === $max_price && 0 == $min_price ) {
                return $empty_price;
            }
            elseif ( $min_price !== $max_price && 0 == $min_price ) {
                return wc_price( $max_price );
            }
        }
    }
    elseif( $product->is_type('simple') )
    {
        if ( '' === $product->get_price() || 0 == $product->get_price() ) {
            return $empty_price;
        }
    }
    return $price;
}

// Product Variation displayed prices
add_filter( 'woocommerce_available_variation', 'empty_and_zero_variation_prices_html', 10, 3);
function empty_and_zero_variation_prices_html( $data, $product, $variation ) {
    // 后台直接返回原数据
    if (is_admin()) return $data;
    
    if( '' === $variation->get_price() || 0 == $variation->get_price() )
        $data['price_html'] = __('Enquire', 'woocommerce');

    return $data;
}

说明

is_admin()函数会检测当前是否处于WordPress后台(包括商品列表、商品编辑页等所有后台场景),当检测为后台时,函数直接返回原始的价格或变体数据,不执行后续的替换逻辑,以此确保只有前端页面会显示自定义的"Enquire"文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:42:23