对于使用 WordPress 自定义文章类型(Custom Post Type) 创建的产品,调整其显示顺序的方法与标准的文章或 WooCommerce 产品类似,但需要一些特定的调整。
核心原理依然是利用 WordPress 内置的 menu_order
字段和对应的查询参数。以下是为您量身定制的几种方法:
方法一:使用原生“菜单顺序”字段(最推荐)
这是最核心和灵活的方法,无需插件。
第1步:为自定义文章类型启用“菜单顺序”支持
首先,您需要确保在注册自定义文章类型时,开启了 page-attributes
支持。这会在文章编辑页面显示“菜单顺序”输入框。
请检查您的主题的 functions.php
文件中注册自定义文章类型的代码。它应该包含 'supports'
参数,并且其中包含 'page-attributes'
。
// 注册自定义文章类型的示例代码 function create_my_product_cpt() { $args = array( 'label' => '产品', 'public' => true, 'has_archive' => true, 'supports' => array( 'title', 'editor', 'thumbnail', 'page-attributes' ), // 确保有 'page-attributes',这样才能有菜单顺序字段 // ... 其他参数 ); register_post_type( 'my_product', $args ); // 'my_product' 是您的文章类型名称 } add_action( 'init', 'create_my_product_cpt' );
如果之前没有添加,添加上面那行代码后,需要重新保存一遍固定链接设置(设置 > 固定链接 > 直接点击“保存更改”)来刷新 rewrite rules。
第2步:编辑产品并设置顺序
现在,在您自定义的“产品”文章编辑页面右侧的“发布”元盒中,点击齿轮图标,您应该能看到 “菜单顺序” 输入框。
- •为每个产品输入一个数字。
- •规则:数字越小,排序越靠前(例如,0 排在 10 前面)。
第3步:修改前端查询以使用菜单顺序
这是最关键的一步。您需要修改前端显示产品列表的查询,告诉它按照 menu_order
来排序。
情况A:如果您使用主题自带的存档页面(Archive Page)
例如,访问 yoursite.com/my_product
会列出所有产品。您需要在主题的 functions.php
文件中添加以下代码:
// 修改主查询,让自定义文章类型存档页按菜单顺序排序 add_action( 'pre_get_posts', 'modify_my_product_archive_order' ); function modify_my_product_archive_order( $query ) { // 判断是否在前台并且是主查询,防止影响后台和其他查询 if ( is_admin() || ! $query->is_main_query() ) { return; } // 检查是否是您的自定义文章类型存档页 if ( is_post_type_archive( 'my_product' ) ) { // 将 'my_product' 替换为您的文章类型名称 $query->set( 'orderby', 'menu_order' ); $query->set( 'order', 'ASC' ); // ASC 升序,从小到大 } }
情况B:如果您使用自定义页面模板或短代码调用产品
如果您是在页面模板中使用 WP_Query
来获取产品,直接在查询参数中指定即可:
$args = array( 'post_type' => 'my_product', // 您的文章类型名称 'posts_per_page' => -1, // 显示所有产品 'orderby' => 'menu_order', // 按菜单顺序排序 'order' => 'ASC' // 升序排列 ); $products = new WP_Query( $args );
方法二:使用拖拽排序插件(最便捷)
如果您觉得手动输入数字太麻烦,插件依然是最佳选择。几乎所有修改文章顺序的插件都支持自定义文章类型。
推荐插件:Intuitive Custom Post Order 或 Post Types Order
- 1.安装并激活插件。
- 2.进入 WordPress 后台,找到您的自定义文章类型(例如,“产品”)。
- 3.在列表页面,插件通常会添加一个 “拖拽排序” 或 “Order” 的选项页签。
- 4.进入该页签,直接通过拖放来排序即可。插件会自动处理好背后的
menu_order
值。
优点:极其简单直观,非常适合管理大量产品。
缺点:需要安装插件。
方法三:使用高级自定义字段(ACF)创建排序字段
如果您需要更复杂的排序逻辑(例如,除了手动排序外,还想结合另一个数字字段排序),可以使用 Advanced Custom Fields (ACF) 插件创建一个数字字段(如 sort_number
),然后按该字段排序。
查询示例:
$args = array( 'post_type' => 'my_product', 'posts_per_page' => -1, 'meta_key’ => 'sort_number', // ACF 字段名称 'orderby’ => 'meta_value_num', // 按数字值排序(如果是日期就用 meta_value_date) 'order’ => 'ASC' ); $products = new WP_Query( $args );
总结建议
方法 | 适用场景 | 推荐度 |
---|---|---|
方法一:菜单顺序 | 希望代码轻量,保持网站纯净,愿意手动输入顺序值 | ★★★★★ |
方法二:拖拽插件 | 追求最高效率和直观操作,不介意多一个插件 | ★★★★★ |
方法三:ACF字段 | 排序逻辑复杂,需要与其他自定义字段联动 | ★★★☆☆ |
对于大多数用户,我的建议是:
- •先检查并确保您的自定义文章类型支持
page-attributes
。 - •如果您不常调整顺序或产品不多,使用方法一。
- •如果您需要频繁调整顺序,直接安装 Intuitive Custom Post Order 插件(方法二),这是最省时省力的方案。
这是我对于品牌独立站,尤其是WordPress建站的全部分享

我写了份一万多个字的Wordpress 建站指南