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

ACF日期字段无法排除循环中过期事件的问题求助

解决WordPress自定义活动循环无法排除过期活动的问题

你的代码存在几个关键问题,导致无法正确过滤已过期的活动,以下是具体修正方案:

核心问题梳理

  1. 日期格式不匹配:你用date('l j F')生成的是Monday 5 August这类格式,但WordPress的meta_query指定type => 'DATE'时,要求使用标准的Y-m-d(如2024-08-05)格式,否则日期比较逻辑会失效。
  2. 参数拼写错误:meta-key应为meta_key(下划线而非短横线),数组键名拼写错误会导致参数不生效。
  3. 中文引号问题:代码中使用了中文单引号‘’,PHP无法识别这类引号,会引发语法错误(可能被主题的错误处理机制屏蔽,所以没显示报错)。
  4. 冗余参数冲突:单独的meta-key与meta_query里的date_clause重复,容易造成逻辑冲突。

修正后的代码

if( $orderby !== 'view_count' ) {

    $today = date('Y-m-d'); // 使用DATE类型要求的标准格式
    $nectar_blog_arr = array(
        'post_type' => 'evenement',
        'posts_per_page' => $posts_per_page,
        'post_status' => 'publish',
        'meta_query' => array(
            'relation' => 'AND',
            'date_clause' => array(
                'key' => 'event_startdate',
                'value' => $today,
                'type' => 'DATE',
                'compare' => '>='
            )
        ),
        'orderby' => array(
            'date_clause' => 'ASC'
        ),
        'offset' => $post_offset,
        'category_name' => $category,
        'paged' => $paged
    );
}

额外验证建议

  • 确认event_startdate自定义字段的存储格式确实是Y-m-d:如果字段存的是时间戳,需要调整为$today = current_time('timestamp');,同时将type改为'NUMERIC',compare保持'>='。
  • 开启PHP错误日志排查潜在问题:在wp-config.php中添加define('WP_DEBUG', true); define('WP_DEBUG_LOG', true);,错误会记录到wp-content/debug.log文件中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 10:07:35