如果帖子仅在使用wp_Query的类别中,则排除该类别

时间:2015-05-06 作者:Ahmad

我有两类

类别1(ID=1)

  • 类别2(ID=2)
    • 我想显示类别2和(类别1+类别2)中的帖子。

      如果帖子仅在类别1中,则不应显示。

      我使用了以下代码。

      \'category__in\'     => array(2)
      
      这是可行的,但我认为这不是正确的方法。好像在将来,如果我添加一个新类别,那么我必须在代码中添加其id,以显示同样位于该新类别中的帖子。

      如果只在类别1中发布,是否有适当的方法排除仅在类别1中发布的帖子?

    2 个回复
    最合适的回答,由SO网友:Pieter Goosen 整理而成

    这是一种非常不寻常的情况,我在这里能想到的唯一解决方案是获取一个类别ID数组,将其包含到category__in 为了跳过only 分配给类别1

    为了实现这一目标,我们必须

    使用get_terms() 获取所有类别。我们将使用exclude 要排除类别的参数1 从那个列表中。我们还将设置fields 参数到ids 为了获取类别ID数组

    通过来自的结果传递数组get_terms()category__in

    示例

    $cat_ids = get_terms( \'category\', array( \'fields\' => \'ids\', \'exclude\' => 1 ) );
    
    然后按如下方式使用

    \'category__in\' => $cat_ids,
    
    请注意,您需要检查是否有get_terms() 并且在运行查询之前不会返回任何错误。您不想将空数组或错误传递给category__in

    编辑我已经废弃了get_categories 想法并同意get_terms()get_terms 由使用get_categories 我们还可以设置get_terms() 只返回类别ID,这正是所需的全部内容。

    原始帖子已更新以反映更改

    SO网友:omxv

    我只是猜测,但解决方案必须类似于

    $args = array(
        \'tax_query\' => array(
            array(
                \'taxonomy\' => \'category\',
                \'field\' => \'id\',
                \'terms\' => array(1, 2),
                \'operator\' => \'AND\'
            )
        )
    );
    $results = new WP_Query( $args );
    

    结束

    相关推荐

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

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