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

WooCommerce如何添加按产品发布日期的自定义排序选项?

问题根因

你的代码有两处错误导致排序失效:

  • 参数匹配错误:你添加前台排序选项时用的选项键是publish_date,但在排序逻辑判断里写的是判断modified_date值,自定义排序分支完全不会触发。
  • 排序字段名错误:WooCommerce产品是WordPress自定义文章类型,不存在publish_date这个内置排序字段,产品发布日期对应的WP_Query排序参数为date,对应数据库wp_posts表的post_date字段,就是你在后台看到的产品发布时间。传入无效的orderby参数时,WordPress会自动回退到默认排序规则,也就是你遇到的按ID排序的情况。
可直接使用的正确代码

替换你原有代码即可生效:

add_filter( 'woocommerce_get_catalog_ordering_args', 'enable_catalog_ordering_by_publish_date' );
function enable_catalog_ordering_by_publish_date( $args ) {
    if ( isset( $_GET['orderby'] ) && 'publish_date' === wc_clean( $_GET['orderby'] ) ) {
        $args['orderby'] = 'date';
        $args['order'] = 'DESC'; // 新发布产品在前,如需旧产品在前改为ASC
    }
    return $args;
}

add_filter( 'woocommerce_catalog_orderby', 'add_custom_sorting_options' );
function add_custom_sorting_options( $options ){
    $options[ 'publish_date' ] = '按发布日期排序(新→旧)';
    return $options;
}
扩展说明

如果需要同时支持按发布日期从旧到新排序,新增一个对应选项即可,参考逻辑:

  • 在woocommerce_catalog_orderby过滤器里新增键为publish_date_asc的选项
  • 在排序参数判断里新增对publish_date_asc的判断,返回orderby为date、order为ASC的参数数组即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 23:24:15