如何修改WooCommerce的默认产品排序方式?(含拖拽与代码方法)

如何修改WooCommerce的默认产品排序方式:自定义器产品目录默认排序选项说明、拖拽排序与menu_order关系,以及店铺页分类页与搜索页差异;附常见代码片段与改了不生效排查,依据官方文档整理(查询日2026-10-17,未做后台实测)。

独立站商品越来越多之后,店铺页默认先显示哪些货,会直接影响浏览效率。WooCommerce 默认排序可以在后台自定义器里改,也可以用拖拽(menu_order)固定顺序,必要时再用代码片段扩展。本文按 WooCommerce 官方文档整理步骤与选项含义,查询日期 2026-10-17;未登录你的站点后台做实测,也没有自制截图,请以你后台实际界面与当前插件版本为准。

依据文档:

刚发布商品、还不熟悉后台时可先看 如何发布第一个 WooCommerce 商品;详情页布局见 产品详情页布局。

在自定义器里改 WooCommerce 默认产品排序

官方 Product Catalog 文档写明:进入 外观 → 自定义 → WooCommerce → 产品目录(Product Catalog),找到 Default product sorting(默认产品排序)。选择后可在右侧预览店铺页或分类页,再点 Publish(发布) 保存。

文档列出的默认排序选项及含义(中文括号为理解用,后台文案可能随语言包略有差异):

选项(文档英文)作用顾客侧常见显示
Default sorting (custom ordering + name)先看自定义顺序(menu_order),相同顺序再按名称字母Default Sorting / 默认排序
Sort by Popularity (sales)按销量从高到低Sort by Popularity / 按人气
Sort by Average rating按平均评分从高到低按评分
Sort by most recent按加入商店的时间,新→旧Sort by Latest / 最新
Sort by price (asc / desc)价格从低到高或从高到低价格:低到高 / 高到低

关于版本:旧文曾写「WooCommerce 3.3.0 及以上」才在自定义器改入口。本文不编造「你站点当前精确版本号」;上述路径以 2026-10-17 仍可打开的官方 Customizer / Product Catalog 文档为准。若你使用支持全站编辑的区块主题,自定义器菜单可能被隐藏,官方说明可直接访问 /wp-admin/customize.php 打开(见 Customizer 总览与排序文档中的说明)。

手动拖拽排序与 menu_order

官方「Feature, Filter, and Sort Products」文档说明:在 WooCommerce → Products(产品) 列表点 Sorting(排序),即可拖拽调整顺序。也可先按分类/库存等筛选,再进入 Sorting,只对当前子集拖拽。

拖拽结果会落到每个商品的 menu_order(也可在编辑商品 → 高级 → Menu order 里填数字;数值越小通常越靠前——此为常见用法说明,具体以你后台为准)。

要让顾客看到这套手动顺序,文档写明:自定义器里的默认排序需选中 Default Sorting(即 custom ordering + name / menu_order 那一项)。若默认选成「按价格」「按最新」等,拖拽顺序不会作为前台默认规则。

店铺页、分类页、搜索页的差异

Product Catalog 文档写明:默认产品排序影响 Shop(店铺)页与 Category(分类)页上的默认展示顺序;顾客仍可用前台排序下拉框临时改成其他方式。

搜索结果页通常走另一套查询逻辑,不等于自动继承目录默认排序。改完默认排序后,请分别打开店铺页、某个分类页、站内搜索结果看一眼(主题或搜索插件也可能覆盖)。菜单里如何展示商品分类,可参考 如何在菜单导航栏显示 WooCommerce 产品。

用代码片段自定义排序(先备份)

当默认选项不够用时,可用主题子主题的 functions.php 或 Code Snippets 类插件添加过滤器。以下示例使用 WooCommerce 常见公开钩子 woocommerce_default_catalog_orderby 与 woocommerce_get_catalog_ordering_args;依据公开文档与代码生态中的常见写法整理,未在本机后台实测。上线前请备份网站,优先在暂存环境测试。

示例 1:把全站默认排序改为按最新(对应选项值 date):

add_filter( 'woocommerce_default_catalog_orderby', function () {
    return 'date';
} );

示例 2:仅在某个产品分类强制按价格从低到高(把 your-category-slug 换成真实 slug):

add_filter( 'woocommerce_default_catalog_orderby', function ( $orderby ) {
    if ( is_product_category( 'your-category-slug' ) ) {
        return 'price';
    }
    return $orderby;
} );

示例 3:为前台排序下拉增加「按标题 A–Z」,并处理查询参数(需同时过滤选项列表与排序参数;文案可按站点语言调整):

add_filter( 'woocommerce_catalog_orderby', function ( $options ) {
    $options['alphabetical'] = 'Sort by name: A to Z';
    return $options;
} );

add_filter( 'woocommerce_get_catalog_ordering_args', function ( $args ) {
    $orderby = isset( $_GET['orderby'] ) ? wc_clean( wp_unslash( $_GET['orderby'] ) ) : '';
    if ( 'alphabetical' === $orderby ) {
        $args['orderby'] = 'title';
        $args['order']   = 'ASC';
        $args['meta_key'] = '';
    }
    return $args;
} );

不要直接在父主题里改文件以免更新被覆盖。复杂排序(按库存、按自定义字段)可用插件或请开发评估;本文不推荐未核实来源的长段 posts_clauses 补丁。

常见问题

改了默认排序前台没变化?先确认已点自定义器 Publish;再排除全页缓存/CDN、浏览器缓存;检查主题或插件是否用短代码/区块自带查询并写死了 orderby;若用了手动拖拽,确认默认项是否仍为 Default sorting(custom ordering + name)。

「按销量 / 按评分」依据什么?官方 Product Catalog 文档说明:Popularity 按销量(amounts sold),Average rating 按平均评价分数。具体统计字段以 WooCommerce 核心实现为准;关闭评价或销量很少时,这两种排序的区分度会变弱。

SKU 特别多时还要用拖拽吗?可以,但维护成本高。更常见的是默认用最新或销量,只对少数主推品调 menu_order,或按分类分别拖拽。

如果你还在从零搭店,可用 创建网站 搭建 B2C 站,并对照 B2C 网站新手指南 完成基础设置后再调目录排序。

说明:本文依据上述 WooCommerce 官方文档整理(查询日 2026-10-17),未做后台实测与截图;不编造当前 WooCommerce 次版本号、插件名单或未经验证的排序效果。


作者:庄朋龙(关于 SHOPAGG)。

分享您的喜爱

发表回复