所以我在post posttype中添加了一些自定义字段,即event_startdate和event_enddate。我的目标是显示当前正在进行的所有事件(因此当前日期介于开始日期和结束日期之间)。但是,没有帖子显示与我当前的代码。
这是我得到的:
<?php
$today = date('Ymd');
$args = array (
'posts_per_page' => '9',
'order' => 'ASC',
'orderby' => 'id',
'meta_query' => array(
array(
'key' => 'event_startdate',
'compare' => '>=',
'value' => $today
),
array(
'key' => 'event_enddate',
'compare' => '<=',
'value' => $today
)
)
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
,然后循环的其余部分。我知道循环工作,因为所有的帖子显示当meta_query被删除。会是什么问题呢?我已经尝试了一些不同的日期格式(硬编码),但这似乎并没有解决它。我也尝试了网上发布的其他解决方案,但似乎没有一个能解决这个问题。
编辑:同时开始处理另一个查询,这次使用event_featured,一个TRUE/FALSE字段。代码与前面提到的代码相同,除了参数。也不返回帖子: $args = array (
'post_type' => 'post',
'posts_per_page' => '9',
'order' => 'ASC',
'orderby' => 'id',
'meta_query' => array(
array(
'key' => 'event_featured',
'value' => '1',
'compare' => '=='
)
)
);
我没有在你的代码中看到你声明的帖子类型查询。将post类型添加到查询中,参见第一个数组后的第一行。试试这个:
$args = array (
'post_type' =>'posttype',
'posts_per_page' => '9',
'order' => 'ASC',
'orderby' => 'id',
'meta_query' => array(
array(
'key' => 'event_startdate',
'compare' => '>=',
'value' => $today
),
array(
'key' => 'event_enddate',
'compare' => '<=',
'value' => $today
)
)
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
找到问题。我用PHP创建了这些字段。使用管理界面来创建它们对我来说很有效。因此,如果你也在为此挣扎,删除php中的字段,并在Wordpress中重新创建它们。
如果你想在你的主题中包含它们,使用ACF中的导出工具将这些字段导出到PHP代码中。