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

如何让Elementor按自定义字段event_date排序PODs创建的event_calendar文章

按自定义字段event_date排序Elementor文章小部件内容

你通过PODs插件创建了自定义文章类型event_calendar,并添加了自定义字段event_date,但Elementor文章小部件默认按文章发布日期排序,无法满足按活动日期展示的需求。以下是可直接插入主题functions.php的代码,解决这个问题:

基础排序代码(仅按event_date排序)

function sort_events_by_event_date( $query ) {
    // 指定排序依据为自定义字段event_date
    $query->set( 'meta_key', 'event_date' );
    $query->set( 'orderby', 'meta_value_date' );
    $query->set( 'order', 'ASC' ); // 升序(较早的活动排在前面),需要降序可改为'DESC'
}
add_action( 'elementor/query/event_date_order', 'sort_events_by_event_date' );

使用步骤:

  • 将上述代码复制到你的主题或子主题的functions.php文件中
  • 打开Elementor编辑器,找到对应的文章小部件,进入「查询」选项卡
  • 设置「自定义查询ID」为event_date_order(需与代码中钩子的后缀一致)
  • 更新页面即可生效

可选:同时筛选未过期活动+排序

如果需要只展示未过期的活动(活动日期≥今天),可使用以下代码:

function sort_and_filter_events_by_event_date( $query ) {
    // 筛选条件:活动日期不早于今天
    $meta_query = [
        [
            'key'     => 'event_date',
            'value'   => date( 'Y-m-d' ),
            'compare' => '>=',
            'type'    => 'DATE',
        ],
    ];
    $query->set( 'meta_query', $meta_query );
    
    // 按活动日期升序排序
    $query->set( 'meta_key', 'event_date' );
    $query->set( 'orderby', 'meta_value_date' );
    $query->set( 'order', 'ASC' );
}
add_action( 'elementor/query/event_date_order', 'sort_and_filter_events_by_event_date' );

你之前代码无效的原因:

  1. 代码中使用的字段名是start_date,但你的自定义字段实际是event_date,字段名不匹配
  2. 代码仅添加了meta_query筛选条件,未设置排序规则,无法改变默认的发布日期排序逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 08:25:27