比较META_QUERY的两个查询-一个勾选了复选框,另一个没有

时间:2014-03-10 作者:John the Painter

我正在尝试执行以下操作:

两个问题1。让所有勾选了“是”的人2。让所有未勾选“是”主管的人员

我已经设置好了第一个查询,并且运行良好(“people”是一个CPT,director是一个复选框“yes”的ACF)。

<?php $directors = get_posts(array(
    \'post_type\' => \'people\',
    \'orderby\' => \'meta_value\',
    \'meta_key\' => \'last_name\',
    \'order\' => \'ASC\',
    \'posts_per_page\' => -1,
    \'meta_query\' => array(
        array(
        \'key\' => \'director\',
        \'value\' => \'"yes"\',
        \'compare\' => \'LIKE\'
        )
    )
)); ?>
此查询获取所有“人员”,按姓氏排序,并使用meta_query 获取所有选中“控制器”复选框的人。

所以,我的问题是,现在我要做的是,对于第二个查询,让所有那些没有勾选“director”“yes”的人。

enter image description here

以下是我目前掌握的情况:

<?php $people = get_posts(array(
    \'post_type\' => \'people\',
    \'orderby\' => \'meta_value\',
    \'meta_key\' => \'last_name\',
    \'order\' => \'ASC\',
    \'posts_per_page\' => -1,
    \'meta_query\' => array(
        array(
            \'key\' => \'company\',
        \'value\' => \'"\' . get_the_ID() . \'"\',
        \'compare\' => \'LIKE\'
        ),
        array(
        \'key\' => \'director\',
        \'value\' => \'yes\',
        \'compare\' => \'NOT LIKE\'
        )
    )
)); ?>
我尝试了其他一些比较论点,但似乎无法发挥作用。

有什么帮助或想法吗?

1 个回复
SO网友:Bainternet

如果您只有两种类型(directors和none directors,并且您已经准备好获取所有的directors,那么只需使用post__not_in 参数,例如:

// Get your directors just like you do now
// $directors = get_posts(array( ...
// Then create a simple array with only the post id\'s of the directors.
$directors_ids = array();
foreach($directors as $d)
    $directors_ids[] = $d->ID;

//then you can get all of the people who are not directors using:
$people = get_posts(array(
    \'post_type\'      => \'people\',
    \'orderby\'        => \'meta_value\',
    \'meta_key\'       => \'last_name\',
    \'order\'          => \'ASC\',
    \'posts_per_page\' => -1,
    \'post__not_in\'   => $directors_ids
    )
);

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post