WooCommerce产品排序怎么改?
学完这篇,你能在 15 分钟内把 WooCommerce 店铺前台的商品顺序改成你想要的样子——不管是让新品置顶、把主推款排到第一位,还是让顾客自己按价格挑。
第一步:改商品列表的默认排序(全局生效)
这一步要做什么:设置顾客打开商品列表页时,默认看到的是按什么顺序排列的商品。
入口在自定义器里,不在 WooCommerce 设置菜单里,很多人第一次找不到:
WordPress 后台 → 外观 → 自定义(Customize) → 左侧点开 WooCommerce → 产品目录(Product Catalog) → 第一项「默认产品排序方式(Default product sorting)」→ 下拉选择一个(默认排序、按热度、按评分、按最新、按价格从低到高、按价格从高到低、按标题字母顺序)→ 点页面顶部蓝色的 「发布」 按钮。
同一页下面还有一行「默认分类下的排序方式(Default product sorting for categories)」,它只管商品分类页,要单独设一次。
注意:WooCommerce 3.3 之前这个选项在「WooCommerce → 设置 → 产品 → 显示」里。如果你照的是老教程,路径对不上按我上面的走。另外「按热度」依赖销量数据,零销量时看起来顺序像乱排的,别以为是坏了。
第二步:控制顾客能自己切换的排序选项
这一步要做什么:决定商品列表右上角那个排序下拉框里,顾客能看到哪几个选项。
默认有:默认排序、按热度、按评分、按最新、按价格低到高、按价格高到低。想删掉或者新增,用 woocommerce_catalog_orderby 过滤器。把代码贴到子主题的 functions.php 末尾,或者装 Code Snippets 插件 → 添加新的 → 粘贴代码 → 点「保存并激活」:
add_filter( 'woocommerce_catalog_orderby', function ( $options ) {
unset( $options['rating'] ); // 去掉"按评分"
unset( $options['date'] ); // 去掉"按最新"
$options['by_sku'] = '按货号排序'; // 新增一项
return $options;
} );
注意:这只改了「下拉框里有哪些字」。新增的自定义项如果没配对
woocommerce_get_catalog_ordering_args写排序逻辑,顾客选它只会没反应——两个过滤器要一起用。
第三步:手动拖拽,想把谁排第一就排第一
这一步要做什么:不靠日期、不靠价格,纯人工决定顺序。WooCommerce 自带的排序依据是 menu_order,但后台没有拖拽界面,需要插件。
- WordPress 后台 → 插件 → 安装插件,搜索
Post Types Order(作者 Nsp Code),点「现在安装」→「启用」。 - 进入 设置 → Post Types Order,把左侧
Products拖到右边Sortable那一列,如果你也想给订单排序就顺手加上,然后点「保存更改」。 - 回到 产品 → 所有产品,页面顶部会出现 「Re-Order」 按钮,点进去就是一个拖拽列表,按住商品行上下拖动。
- 拖完后点「Update」,再回前台刷新。
注意:拖拽排序只在第一步把「默认产品排序方式」设为「默认排序」时才生效。如果你设的是「按最新」,前台依然按日期走,拖了也白拖。
第四步:用代码按库存、货号、自定义字段排序
这一步要做什么:实现 WooCommerce 下拉框里没有的排序规则。
下面这段让商品列表默认按库存从多到少排列:
add_filter( 'woocommerce_get_catalog_ordering_args', function ( $args ) {
if ( ! isset( $_GET['orderby'] ) ) {
$args['orderby'] = 'meta_value_num';
$args['meta_key'] = '_stock';
$args['order'] = 'DESC';
}
return $args;
} );
meta_key 换成 _sku 就是按货号,换成你自己建的字段名就是按任意自定义字段。
第五步:改完没变化,按这几条排查
- 缓存:清掉缓存插件(WP Rocket、LiteSpeed Cache 等)的缓存,再去 Cloudflare 点「Purge Everything」,浏览器按 Ctrl+F5 强刷。
- 主题/页面构建器的商品网格:如果你用 Elementor Pro 的 Products 小工具或 WPBakery 的 Product Grid 输出商品,它们完全无视 WooCommerce 的排序设置,要去小工具自己的「Order By」参数里改。
- 商品分类页:第二步的手动排序只对全店默认视图有效,分类页要用
pre_get_posts单独处理。
小结
- 全局默认排序在 外观 → 自定义 → WooCommerce → 产品目录,改完必须点「发布」。
- 下拉框的选项用
woocommerce_catalog_orderby增删,排序逻辑用woocommerce_get_catalog_ordering_args实现,两者配套。 - 人工拖拽排序 = 插件 Post Types Order + 默认排序设为「默认排序」。
- 拖完、改完不生效,先查缓存,再查是不是主题或页面构建器自己接管了商品输出。
原文链接:https://www.gj0.com/thread-886.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。