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

如何查询ACF字段launch_date为今日及以后的WordPress自定义文章?

你代码里一共存在4处核心问题:

  • 日期格式不匹配:你当前用date('M, d')生成的是「月份缩写, 日期」格式(比如Oct, 07),但ACF的日期类字段默认存储格式为Y-m-d(带时间的话是Y-m-d H:i:s),两种格式完全不兼容,数据库没法正确做大小比较。
  • 比较运算符用反了:你要的是今日及以后的内容,应该用大于等于>=,你现在写的<=是查询今日及以前的内容,和需求完全相反。
  • 字段类型声明不一致:meta_query里你把字段类型设为DATETIME,但外部排序参数里meta_type又设为DATE,类型不统一会导致数据库比较时出现不可预期的偏差,根据你的字段实际存储格式统一就行,纯日期就都用DATE,带时间就都用DATETIME。
  • 排序参数不规范:按日期类型的自定义字段排序时,直接用meta_value_date作为orderby的取值更稳妥,不需要额外声明meta_type也能保证排序正确。

修正后的代码如下:

<?php

// 生成和ACF日期字段存储格式匹配的当前日期 格式为 年-月-日
$date_now = date('Y-m-d');

// 构造查询参数
$args = array(
    'posts_per_page'    => 20,
    'post_type'         => 'project',
    'meta_query'        => array(
        array(      
            'key'           => 'launch_date',
            'compare'       => '>=',
            'value'         => $date_now,
            'type'          => 'DATE' // 如果你的launch_date带时间就改成DATETIME,同时上面的$date_now改成date('Y-m-d H:i:s')
        )
    ),
    'order'             => 'ASC', // 按launch_date升序就是更近的日期排在前面,要倒序就改成DESC
    'orderby'           => 'meta_value_date',
    'meta_key'          => 'launch_date'
);

// 实际执行查询用new WP_Query即可,你原有代码里的build_query仅用于打印调试参数
$project_query = new WP_Query( $args );

// 后续正常写循环输出逻辑即可
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:27:04