从包含其父类别的查询中排除类别

时间:2011-05-16 作者:zac

我试图使用ID来控制类别输出的结构。我需要排除作为所查询父类别一部分的类别。

我尝试的是:

<?php $the_query = new WP_Query(\'cat=14$cat=-45&showposts=20\');
        $permalink = get_permalink( $post_id );
        while ($the_query->have_posts()) : $the_query->the_post();?>    
            <li>
            <a href="<?php the_permalink() ?>" rel="bookmark" class="postTitleLink">
            <?php the_title(); ?></a>
            </li>
        <?php wp_reset_query(); ?><?php endwhile; ?>
除了类别45之外,在类别id 14中显示所有内容的正确方式是什么?我想以不同的方式对待45个,并以不同的方式显示其所有子类别。尝试并帮助描述我想要的:

#12
- #14
- #14
- #14
 -- #45
  --- #50
   ---- #60
  --- #51
- #14
而不是cat=-我应该使用条件语句吗!in\\u类别?

谢谢你的帮助!

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

首先你应该离开wp_reset_query(); 而不是在循环的每个帖子中重置查询。

至于您的查询,您可以使用category__not_in

$args = array(
    \'cat\' =>  14,
    \'category__not_in\' => array(\'45\'),
    \'posts_per_page\' => 20
);

$the_query = new WP_Query($args);
while ($the_query->have_posts()) : $the_query->the_post();?>    
            <li>
            <a href="<?php the_permalink() ?>" rel="bookmark" class="postTitleLink">
            <?php the_title(); ?></a>
            </li>
<?php endwhile; ?>
<?php wp_reset_query(); ?>
这将排除所有45类员额。

结束

相关推荐

是否从wp_list_categories中筛选“非活动”类别?

我想在类别编辑器屏幕中添加一个复选框,以允许“停用”类别(可能是在网站所有者处理类别内容和帖子时)。完成此操作后,我可以选择哪些选项来排除设置为“非活动”的类别?我认为可以这样做的一种方法是,只需在wp\\u list\\u类别上运行一个过滤器,然后在exlude=list中插入一个实用程序函数,该函数将返回选中inactive为true的所有cat\\u id。还有其他方法吗?