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

无需设置变量产品,为WooCommerce简单产品添加价格区间

在WooCommerce中为简单产品添加价格区间(无需变量产品)

我懂你想要的效果——给WooCommerce的简单产品显示价格区间,但完全不想碰变量产品那一堆额外功能,毕竟你只需要个价格范围展示而已。下面给你两个实用的解决方案,都是不用搞变量产品就能实现的:

方法一:全局设置固定价格区间(适合所有简单产品统一显示)

这个方法会给所有简单产品统一显示你设定的价格区间,代码直接修改WooCommerce的价格显示逻辑:

add_filter('woocommerce_get_price_html', 'simple_product_global_price_range', 10, 2);
function simple_product_global_price_range($price, $product) {
    // 仅对简单产品生效
    if ($product->is_type('simple')) {
        // 替换成你需要的价格区间数值
        $min_price = 45;
        $max_price = 120;
        
        // 用WooCommerce自带的价格格式化函数,自动适配你的店铺货币设置
        $formatted_min = wc_price($min_price);
        $formatted_max = wc_price($max_price);
        
        // 返回新的价格区间显示内容
        $price = $formatted_min . ' - ' . $formatted_max;
    }
    return $price;
}

使用方式:

  • 把这段代码添加到你的WordPress主题(推荐用子主题)的functions.php文件末尾,或者用Code Snippets这类代码管理插件新建一个片段并激活。
  • 如果只想给特定几个产品加区间,可以修改判断条件,比如只针对ID为123的产品:
    if ($product->is_type('simple') && $product->get_id() == 123) {
        // 价格区间代码...
    }
    

方法二:自定义字段实现单个产品独立设置区间(更灵活)

如果不同简单产品需要不同的价格区间,这个方法更合适——给每个简单产品添加自定义输入框,让你在编辑产品时单独设置最低和最高价格:

步骤1:添加产品编辑页面的自定义字段

这段代码会在产品编辑页的「价格」区域添加两个输入框,用来输入最低和最高价格:

// 在产品编辑页面的价格区域添加自定义区间字段
add_action('woocommerce_product_options_pricing', 'add_product_price_range_fields');
function add_product_price_range_fields() {
    woocommerce_wp_text_input(array(
        'id' => '_min_price_range',
        'label' => __('区间最低价格', 'woocommerce'),
        'type' => 'number',
        'custom_attributes' => array('step' => '0.01', 'min' => '0')
    ));
    
    woocommerce_wp_text_input(array(
        'id' => '_max_price_range',
        'label' => __('区间最高价格', 'woocommerce'),
        'type' => 'number',
        'custom_attributes' => array('step' => '0.01', 'min' => '0')
    ));
}

// 保存自定义字段的数值
add_action('woocommerce_process_product_meta_simple', 'save_product_price_range_fields');
function save_product_price_range_fields($post_id) {
    $min_range = isset($_POST['_min_price_range']) ? sanitize_text_field($_POST['_min_price_range']) : '';
    update_post_meta($post_id, '_min_price_range', $min_range);
    
    $max_range = isset($_POST['_max_price_range']) ? sanitize_text_field($_POST['_max_price_range']) : '';
    update_post_meta($post_id, '_max_price_range', $max_range);
}

步骤2:修改价格显示逻辑

这段代码会读取你设置的自定义字段值,替换原价格显示为区间:

add_filter('woocommerce_get_price_html', 'custom_simple_product_price_range', 10, 2);
function custom_simple_product_price_range($price, $product) {
    if ($product->is_type('simple')) {
        // 获取自定义字段的数值
        $min_range = get_post_meta($product->get_id(), '_min_price_range', true);
        $max_range = get_post_meta($product->get_id(), '_max_price_range', true);
        
        // 如果设置了区间值,就显示区间;否则保留原价格
        if (!empty($min_range) && !empty($max_range)) {
            $formatted_min = wc_price($min_range);
            $formatted_max = wc_price($max_range);
            $price = $formatted_min . ' - ' . $formatted_max;
        }
    }
    return $price;
}

使用方式:

  • 把上面两段代码都添加到你的主题functions.php或代码片段插件中并激活。
  • 编辑简单产品时,在价格区域就能看到新增的「区间最低价格」和「区间最高价格」输入框,填写后更新产品即可看到价格区间效果。

注意事项:

  • 👉 优先用代码片段插件管理代码,避免直接修改主题文件导致主题更新时代码丢失。
  • 👉 代码生效后,记得清空WooCommerce的缓存(在WooCommerce > 设置 > 高级 > 页面里可以找到缓存清理选项)以及浏览器缓存,确保显示效果正常。
  • 👉 这个方案只是修改价格显示,用户加购时还是会使用产品的原始价格;如果需要让用户选择具体价格,还需要额外添加前端选择逻辑,但你的需求只是显示区间的话,上面的代码完全足够。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:02:15