Wordpress WP_Query,从元术语中排除日期
Posted
技术标签:
【中文标题】Wordpress WP_Query,从元术语中排除日期【英文标题】:Wordpress WP_Query, exclude date from meta term 【发布时间】:2021-07-16 10:04:12 【问题描述】:我正在为客户端使用 WP-JSON 制作 API,他们正在使用管理事件的插件,并且 API 应该返回下一个事件,而不是过去。
function app_get_newer_posts($data)
$args = array(
'post_type' => 'event',
'post_status' => 'publish',
'posts_per_page' => 99,
'paged' => $data['page'],
'meta_key' => 'ovaem_date_start_time',
'orderby' => 'meta_value_num',
'order' => 'asc'
);
$query = new WP_Query( $args );
if ($query->have_posts())
$ret = [];
while ( $query->have_posts() )
$term = get_term(get_the_ID,'');
$query->the_post();
setlocale(LC_TIME, 'it_IT.UTF8', 'it.UTF8', 'it_IT.UTF-8', 'it.UTF-8');
if(get_post_meta(get_the_ID(), 'ovaem_date_start_time')[0] < date("Y-m-d"))
$ret['schedule'][] = [
'date' => strftime('%e %B %Y',get_post_meta(get_the_ID(), 'ovaem_date_start_time')[0]),
'category' => [ get_the_terms( get_the_ID(), 'categorie' )[0]->name ],
'premium' => false,
'url' => get_the_permalink(),
'groups' => [[
'time' => utf8_encode( strftime("%d %b %Y", get_post_meta(get_the_ID(), 'ovaem_date_start_time')[0]) ),
'sessions' => [[
'id' => get_the_ID(),
'name' => html_entity_decode(the_title('','',false), ENT_QUOTES),
'location' => get_the_terms( get_the_ID(), 'location')[0]->name,
'description' => get_the_content(),
'timeStart' => date('d M Y h:i',get_post_meta(get_the_ID(), 'ovaem_date_start_time')[0]),
'timeEnd' => date('d M Y h:i',get_post_meta(get_the_ID(), 'ovaem_date_end_time')[0]),
'categories' => [ get_the_terms( get_the_ID(), 'categorie' )[0]->name ],
'pic' => get_the_post_thumbnail_url(),
'position' => [
'lat' => get_post_meta(get_the_ID(), 'ovaem_event_map_lat')[0],
'lng' => get_post_meta(get_the_ID(), 'ovaem_event_map_lng')[0]],
'slug' => get_post_field( 'post_name', get_post() ),
]]
]]
];
else
$ret = "-1";
return $ret;
目前,它通过meta_key
“ovaem_date_start_time”获取所有事件类型和顺序的帖子,但它应该排除所有过去的事件。
我应该将什么参数传递给args
数组来比较当前的 meta_key 值和今天的日期?
【问题讨论】:
【参考方案1】: 'meta_query' => array(
array(
'key' => 'ovaem_date_start_time',
'value' => time(),
'compare' => '>=',
)
)
像这样的工作,获取开始日期大于当前日期的所有事件,您可能需要更改值,因为它取决于 ovaem_date_start_time 实际保存为时间还是日期时间
【讨论】:
感谢您的回复,尝试了您的解决方案,但它仍然返回过去的事件。 PS:meta_key "ovaem_date_start_time" 是一个时间戳 ovaem_date_start_time保存为什么类型的字段 时间戳"time": "1619827200",
也许尝试编辑的答案(我没有测试过)
试过了,还在。以上是关于Wordpress WP_Query,从元术语中排除日期的主要内容,如果未能解决你的问题,请参考以下文章
WordPress 中自定义 wp_query 的分页需要 404 错误页面
WP_Query($args) 在 Wordpress 中不起作用