取决于您从“date\\u event”post meta字段返回的内容。
这可能是罪魁祸首——如果是一个月和一天的实际日期,它将与日期(“Y”)不匹配,而日期正好是“2018”。
您可以通过以下方式检查任何议程帖子的“date\\u event”中的值:
print\\u r(get\\u post\\u meta($post\\u id,“date\\u event”,true));
如果“date\\u event”中的值是一个Unix时间戳,那么实际上就很容易了,因为这样您就可以查询从当前年份的1月1日开始的所有日期,例如:
$first_of_year = strtotime( "1 January " . date( \'Y\' ) );
$args = array( \'post_type\' => \'agenda\',
\'posts_per_page\' => -1,
\'meta_key\' => \'date_event\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'ASC\',
\'meta_query\' => array(
array(
\'key\' => \'date_event\',
\'value\' => $first_of_year,
\'compare\' => \'>=\',
).
),
\'tax_query\' => array(
array(
\'taxonomy\' => \'event_type\',
\'field\' => \'term_id\',
\'terms\' => $type_name,
)
)
);
如果date\\u event给您一个像20180320这样的值,您可以做类似的事情,但是。。。
$first_of_year = date( \'Y\' ) . \'0101\';
如果您遇到类似“2018-03-29”的情况,此时您可能需要使用“type”=>“DATE”——但如果您有前两种情况之一,则不需要它。
还有一件事:“sort\\u order”不是一个有效的参数,尽管它将被忽略)。你只需要“订单”,反正你已经把它放低了。
Ans比较数值时,最佳做法是将“orderby”=>“meta\\u value”更改为“orderby”=>“meta\\u value\\u num”。