首先,不要使用query\\u帖子!(为什么不呢?That is why!)
第二,如果您的自定义字段(CF)保存在Ymd表单中(您确信这一点,是吗?!),即使您没有将“type”定义为“date”,也应该一切正常。阅读关于SE等的多个讨论。如果不将日期值与一个meta\\u query-array中包含两个日期的数组进行比较,那么最好避免使用“date”类型。所以,删除\'type\'=>\'date\'
.
话虽如此,我还是想知道您的查询是否返回了一个结果,因为如果我遍历它,结果就是这样的:当您使用relation
“和”。
First condition: 如果20120101的值(=value
) 大于或等于(=compare
) 存储在str\\u date中的值(=key
), 我们可以走了。
项目#1:20120101>=20120101:正确
项目#2:20120101>=20120401:错误Second condition: 如果值20120630(=
value
) 小于或等于(=
compare
) 存储在end\\u dte中的值(=
key
), 我们可以走了。
项目1:20120630<;=20120601:错误项目2:20120630<;=20121201:正确由于两个项目都不满足这两个条件,我想知道WP会返回哪怕一个。我认为对于您想要的,这个查询应该可以:
// New Query: se216174
$se216174_args = array(
\'posts_per_page\' => -1, // Why \'-1\'? Because the custom fields limit the results anyway
\'post_type\' => \'projects\',
\'meta_query\' => array(
\'relation\' => \'AND\', // This is default, you could skip it
array(
\'key\' => \'str_dte\',
\'compare\' => \'<=\', // I have changed this, so everything with a date greater than what we have in the next line should be displayed.
\'value\' => \'20120101\',
),
array(
\'key\' => \'end_dte\',
\'compare\' => \'>=\', // Same as above
\'value\' => \'20121201\', // New date so that both your projects will match
),
),
);
$se216174_query = new WP_Query( $se216174_args );
if ( $se216174_query->have_posts() ) :
while ( $se216174_query->have_posts() ) :
$se216174_query->the_post();
// Display post, eg. echo the_title();
endwhile; wp_reset_postdata();
else :
// No posts, eg. echo \'Nothing found\';
endif;
未测试,但这应该可以工作。让我像上面一样快速检查:
First condition: 如果20120101的值(=value
) 小于或等于(=compare
) 存储在str\\u date中的值(=key
), 我们可以走了。
项目1:20120101<;=20120101:正确项目#2:20120101<;=20120401:正确Second condition: 如果值20120630(=value
) 大于或等于(=compare
) 存储在end\\u dte中的值(=key
), 我们可以走了。
项目1:20121201>=20120601:正确
项目#2:20121201>=20121201:正确因此,如果您想显示20120101和20121201之间的所有内容,这就是您需要的查询。