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

如何在WordPress+WooCommerce中创建固定价格商品专属页面

实现WooCommerce专属“3k Store”页面自动筛选3000元商品的方法

嘿,这个需求我帮不少用户落地过,给你分享三种靠谱的方案,你可以根据自己的技术能力来选:

方案一:自定义短代码(适合技术小白)

WooCommerce自带产品短代码,但没法直接筛选固定价格,不过我们可以自己写一个简单的短代码来实现:

  1. 打开WordPress后台,进入「外观」→「主题文件编辑器」,找到当前主题的functions.php文件(强烈建议用子主题操作,避免主题更新丢失代码)。
  2. 在文件末尾添加以下代码:
function display_3k_products() {
    // 查询价格为3000的产品
    $args = array(
        'post_type'      => 'product',
        'posts_per_page' => -1, // 显示所有符合条件的产品
        'meta_query'     => array(
            array(
                'key'     => '_price',
                'value'   => 3000,
                'type'    => 'numeric',
                'compare' => '='
            )
        )
    );

    $products = new WP_Query($args);

    ob_start(); // 开启输出缓存

    if ($products->have_posts()) {
        woocommerce_product_loop_start();
        while ($products->have_posts()) {
            $products->the_post();
            wc_get_template_part('content', 'product');
        }
        woocommerce_product_loop_end();
        wp_reset_postdata();
    } else {
        echo '<p>暂无价格为3000元的商品</p>';
    }

    return ob_get_clean();
}
add_shortcode('3k_store_products', 'display_3k_products');
  1. 保存文件后,新建一个页面,标题设为「3k Store」,在页面内容里输入短代码[3k_store_products],发布页面即可。

方案二:自定义页面模板(适合有基础的开发者)

如果想让这个页面的布局更个性化,可以用自定义页面模板:

  1. 找到当前主题的page.php文件,复制一份并重命名为page-3k-store.php。
  2. 在文件最顶部添加模板注释:
<?php
/*
Template Name: 3k Store Page
*/
?>
  1. 找到页面中的主查询部分(通常是if ( have_posts() ) : while ( have_posts() ) : the_post();),替换为以下产品查询代码:
<?php
// 自定义产品查询
$args = array(
    'post_type'      => 'product',
    'posts_per_page' => -1,
    'meta_query'     => array(
        array(
            'key'     => '_price',
            'value'   => 3000,
            'type'    => 'numeric',
            'compare' => '='
        )
    )
);

$products = new WP_Query($args);

if ($products->have_posts()) {
    woocommerce_product_loop_start();
    while ($products->have_posts()) {
        $products->the_post();
        wc_get_template_part('content', 'product');
    }
    woocommerce_product_loop_end();
    wp_reset_postdata();
} else {
    echo '<p>暂无价格为3000元的商品</p>';
}
?>
  1. 保存文件后,新建页面「3k Store」,在页面属性的「模板」下拉菜单中选择「3k Store Page」,发布页面即可。

方案三:利用钩子修改全局查询(灵活度最高)

这种方法不需要修改页面内容或模板,直接通过钩子在页面加载时自动修改查询:

  1. 同样在主题的functions.php中添加以下代码:
function filter_3k_store_products($query) {
    // 只在前台、访问3k Store页面(slug为3k-store)且是主查询时生效
    if (!is_admin() && $query->is_main_query() && is_page('3k-store')) {
        $query->set('post_type', 'product');
        $query->set('meta_query', array(
            array(
                'key'     => '_price',
                'value'   => 3000,
                'type'    => 'numeric',
                'compare' => '='
            )
        ));
    }
}
add_action('pre_get_posts', 'filter_3k_store_products');
  1. 新建页面「3k Store」,确保页面的slug是3k-store(默认会根据标题生成),发布后访问页面就会自动显示价格为3000的商品。

额外说明

  • 如果你需要包含变体产品(即父产品下有价格为3000的变体),上面的代码只会显示价格为3000的变体本身。如果想显示父产品,需要调整meta_query,添加对父产品变体价格的判断,比如:
'meta_query' => array(
    'relation' => 'OR',
    // 主产品价格为3000
    array(
        'key'     => '_price',
        'value'   => 3000,
        'type'    => 'numeric',
        'compare' => '='
    ),
    // 变体产品价格为3000的父产品
    array(
        'key'     => '_min_variation_price',
        'value'   => 3000,
        'type'    => 'numeric',
        'compare' => '='
    )
)
  • 修改代码前记得备份主题文件,或者使用子主题开发,避免主题更新导致代码丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:03:47