Repeater字段的ACF字段查询不为空

时间:2016-03-03 17:21:09

标签: wordpress advanced-custom-fields wp-query

正在阅读有关在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个专利。怎么做?

4 个答案:

答案 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

}}