如何将WooCommerce默认排序修改为「自定义排序+日期」而非「自定义排序+名称」
WooCommerce 商品目录默认排序调整方案
需求说明
将原有默认的「自定义排序+名称」规则,调整为「自定义排序+日期」:已设置自定义排序的商品优先按自定义规则排序,未设置自定义排序的商品默认按发布日期倒序排列。
效果示例:
原代码失效原因
原有代码存在两处逻辑错误:
- 多字段排序的参数写法不符合WordPress查询规范,无法同时触发两个排序规则
- 清空
meta_key的操作会干扰WooCommerce原生自定义排序逻辑的运行
正确实现代码
将以下代码添加到主题functions.php文件中即可生效:
add_filter('woocommerce_get_catalog_ordering_args', 'adjust_catalog_default_order'); function adjust_catalog_default_order( $args ) { // 仅默认排序场景下生效,不影响用户主动选择的其他排序方式 if ( empty($_GET['orderby']) || $_GET['orderby'] === 'menu_order' ) { $args['orderby'] = [ 'menu_order' => 'ASC', // 优先按自定义排序(menu_order)升序 'date' => 'DESC' // 自定义排序值相同时按发布日期倒序 ]; unset($args['meta_key']); } return $args; }
生效验证
添加代码后清空网站缓存、WooCommerce缓存后刷新商品列表页即可:
- 已设置自定义排序权重的商品,保持原有自定义顺序展示
- 未设置自定义排序的商品,按最新发布在前的规则倒序排列
内容的提问来源于stack exchange,提问作者Jonas Borneland
相关产品推荐
相关产品推荐

