正在阅读有关在wordpress here中查询ACF字段的信息,但是这个位有问题:
$args = array(
'posts_per_page' => -1,
'post_type' => 'team_member',
'status' => 'publish',
'orderby' => 'title',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'patents',
'value' => array(''),
'compare' => 'NOT IN'
)
)
);
$the_query = new WP_Query($args);
基本上,只是尝试查询所有具有ACF Repeater字段的帖子,名为patents
,其中至少有1个专利。怎么做?
答案 0 :(得分:4)
我必须自己处理这个问题,最后为我工作的是查询转发器字段值大于0的所有帖子。
$args = array(
'posts_per_page' => -1,
'post_type' => 'team_member',
'status' => 'publish',
'orderby' => 'title',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'patents',
'value' => 0
'compare' => '>'
)
)
);
Mark's answer搜索“专利”= 1仅返回转发字段中有一个值的帖子。
答案 1 :(得分:0)
http://www.advancedcustomfields.com/resources/the_repeater_field/
首先尝试访问repeater字段,然后调用WP_Query。如果你要这样做:
if( get_field('repeater_field_name', $post_id) )
然后调用sub_field和/或在本例中调用WP_Query。
还有这种语法,您可以收集所需的所有帖子,然后滚动帖子:
if( have_rows('repeater_field') ):
while( have_rows('repeater_field') ) : the_row();
$sub = get_sub_field('sub_field');
也许你可以在这个级别上调用wp_query?
答案 2 :(得分:0)
只检查值是否为true
$args = array(
'posts_per_page' => -1,
'post_type' => 'team_member',
'status' => 'publish',
'orderby' => 'title',
'order' => 'ASC',
'meta_query' => array(
array(
'key' => 'patents',
'value' => true,
'compare' => '='
)
)
);
$the_query = new WP_Query($args);
答案 3 :(得分:0)
试试这个..
这不是实现目标的标准解决方案,但它会 工作
获取其转发器字段在那里的所有帖子ID
<?php
$args = array(
'posts_per_page' => -1,
'post_type' => 'team_member',
'status' => 'publish',
'orderby' => 'title',
'order' => 'ASC',
);
$the_query = new WP_Query($args);
// The Loop
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
if ( have_rows('patents') ){
$allowed_ids[] = get_the_ID();
}
}
}
/* Restore original Post Data */
wp_reset_postdata();?>
然后运行另一个循环以仅按IDS
获取这些帖子 $args['post__in'] = $allowed_ids;
$the_query = new WP_Query($args);
// The Loop
if ( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) {
$the_query->the_post();
$patents = get_field('patents');//array
}}