无需设置变量产品,为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
相关产品推荐
相关产品推荐

