我正在尝试编写一个WP_Query,它使用来自两个ACF复选框的一些数据作为参数的一部分。
我找到了显示如何在自定义查询中使用字段的文档,但我无法确定复选框的正确语法是什么
我的ACF:
- 标签:升级到主页
- 名称:promote_to_homepage
- 选择:升级到主页:升级到首页
- 标签:制作功能
- 名称:make_feature
- 选择:显示为功能:显示为特性(主页顶部)
这是我的问题:
$the_query = new WP_Query(
array
(
'posts_per_page' => 1,
'meta_key' => 'promote_to_homepage',
'meta_value' => 'Promote to homepage',
'meta_key' => 'make_feature',
'meta_value' => 'Make feature'
)
);
我想我不明白为什么meta_key
和meta_value
实际上需要数据。钥匙是标签吗?价值是一种选择吗?或者我需要使用meta_value => true
或其他什么吗?我尝试了很多变体,但都无法使其发挥作用。
从本质上讲,我想做的是输出最近的帖子,该帖子被检查为"升级到主页"one_answers"制作功能"。
我也试过:
array
(
'posts_per_page' => 1,
'meta_key' => 'promote_to_homepage',
'meta_value' => true,
'meta_key' => 'make_feature',
'meta_value' => true
)
编辑
这是我尝试过的新代码:
$args = array(
'post_type' => 'post',
'posts_per_page' => 1,
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'promote_to_homepage',
'value' => true,
),
array(
'key' => 'make_feature',
'value' => true,
),
)
);
$the_query = new WP_Query($args);
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<h2>' . get_the_title() . '</h2>';
echo '<p>' . get_the_excerpt() . '</p>';
echo '<p><a href="#" class="read-more">Read more</a></p>';
}
}
wp_reset_postdata();
Another option is to get a lot of posts like this:
$args = array(
'post_type' => 'posts',
);
$posts = get_posts($args);
foreach($posts as $item) :
$make_feature = get_post_meta($item->ID, 'make_feature', true );
var_dump($make_feature); //test
$promote_to_homepage = get_post_meta($item->ID, 'promote_to_homepage', true );
var_dimp($promote_to_homepage); //test
if(isset($make_feature) && isset($promote_to_homepage)):
print_r($item);
endif;
endforeach;
在限制帖子之前,首先检查这是否有效。如果您没有从var_dump变量中得到任何结果,则说明ACF有问题。
$args = array(
'post_type' => 'post', //replace 'post' with cpt if you need to.
'posts_per_page' => 1,
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'promote_to_homepage',
'value' => '1',
'compare' => '=='
),
array(
'key' => 'make_feature',
'value' => '1',
'compare' => '=='
),
)
);
$the_query = new WP_Query($args); // This will return posts and other data
$the_query = get_posts( $args ); // This will return the posts
你觉得怎么样?选择WP_Query或get_posts:get_posts无论如何都会从WP_Query返回posts数据,所以您也可以直接使用它。
我不完全确定你说的"真/是"是什么意思,但你可以玩弄价值观。如果自定义字段中的键值实际上是"true/yes",那么您最好将其作为args中的值,否则就是yes或true。