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

如何在Elementor Pro中按ACF日期字段排序WordPress文章?

问题分析与解决方案

现有代码的核心问题

  1. 字段名不匹配:你创建的ACF字段名为relevant_date,但代码中使用的是relevant_datetime,这会导致查询无法匹配到正确的字段数据。
  2. 筛选逻辑偏差:当前代码仅筛选当天的公告,而你的需求是展示最贴近当前时刻的公告(哪怕是昨天临近结束或明天刚开头的公告),不需要限制日期范围。
  3. 排序逻辑错误:按meta_value升序仅会按日期从早到晚排列,无法实现“最接近当前时间”的排序需求。

修正后的代码(支持日期时间字段)

假设你的ACF字段是日期时间类型(存储格式为Y-m-d H:i:s),以下代码会计算每个公告的relevant_date与当前时间的差值绝对值,按差值从小到大排序,让最贴近当下的公告排在最前:

add_action( 'elementor/query/homepage_public_notices', function( $query ) {
    // 获取当前时间戳
    $current_timestamp = current_time( 'timestamp' );
    // 确认ACF字段名
    $acf_field_key = 'relevant_date';

    // 仅查询包含该ACF字段的公告
    $query->set( 'meta_key', $acf_field_key );
    $query->set( 'meta_compare', 'EXISTS' );

    // 自定义排序规则:按字段时间与当前时间的差值绝对值升序
    add_filter( 'posts_orderby', function( $orderby, $query ) use ( $current_timestamp, $acf_field_key ) {
        global $wpdb;
        $orderby = "ABS( UNIX_TIMESTAMP( {$wpdb->postmeta}.meta_value ) - {$current_timestamp} ) ASC";
        return $orderby;
    }, 10, 2 );
} );

针对纯日期字段的适配(无时间)

如果你的ACF字段是纯日期类型(存储格式为Y-m-d),可以调整为按日期与当天的差值排序:

add_action( 'elementor/query/homepage_public_notices', function( $query ) {
    // 获取当天起始时间戳
    $today_start_timestamp = strtotime( date_i18n( 'Y-m-d' ) );
    $acf_field_key = 'relevant_date';

    $query->set( 'meta_key', $acf_field_key );
    $query->set( 'meta_compare', 'EXISTS' );

    add_filter( 'posts_orderby', function( $orderby, $query ) use ( $today_start_timestamp, $acf_field_key ) {
        global $wpdb;
        $orderby = "ABS( UNIX_TIMESTAMP( {$wpdb->postmeta}.meta_value ) - {$today_start_timestamp} ) ASC";
        return $orderby;
    }, 10, 2 );
} );

关键说明

  • 确保代码中的$acf_field_key与你实际创建的ACF字段名完全一致;
  • 日期时间字段的存储格式需保持ACF默认的Y-m-d H:i:s,否则UNIX_TIMESTAMP转换会失效;
  • 该逻辑会包含所有带有relevant_date字段的公告,按“贴近当前时间”的优先级排序,而非仅限制当天内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 01:02:35