我想按类别列出自定义帖子类型的所有帖子,所以我想出了这个代码(见下文)但是我看到这个未分类的类别我要删除。我尝试了查询cat=$cat_id&exclude="1"&post_type=locations
,但它无效。有任何想法吗?谢谢
<div class="entry-content">
<?php
$cats = get_categories();
foreach ($cats as $cat) {
$cat_id= $cat->term_id;
echo "<h2>".$cat->name."</h2>";
query_posts("cat=$cat_id&exclude="1"&post_type=locations");
if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php ?>
<a href="<?php the_permalink();?>"><?php the_title(); ?></a>
<?php echo '<hr/>'; ?>
<?php endwhile; endif; ?>
<?php } ?>
<?php wp_reset_postdata(); ?>
</div><!-- .entry-content -->
答案 0 :(得分:1)
这已经很老了,但我偶然发现了它,所以如果它与任何人相关,我认为这就是答案:
由于您是按ID指定每个类别,因此当您的术语ID为1时,您试图排除您指定的类别。因此,在循环的第一次迭代中,您说的是
cat=1&exclude=1&post_type=locations
由于您准确指定了排除的内容,因此我认为“包含”查询值超过了“独占”查询值。如果是这种情况,你可以这样做(甚至保存查询!):
$cats = get_categories();
foreach ( $cats as $cat ) {
$cat_id = $cat->term_id;
if ( $cat_id == 1 )
continue; // skip 'uncategorized'
echo "<h2>".$cat->name."</h2>";
query_posts("cat=$cat_id&post_type=locations");
?>{the rest}<?php
}
请注意,我不建议使用query_posts
,而是应使用get_posts()
或new WP_Query
。进一步阅读:
https://developer.wordpress.com/2012/05/14/querying-posts-without-query_posts/
答案 1 :(得分:0)
`query_posts( 'cat=-3' );`
// 3是您要排除的类别ID 看更多参考。关于query_posts QUERY POSTS
答案 2 :(得分:-1)
问题是你的报价 试试这个:
query_posts("cat=$cat_id&exclude=1&post_type=locations");
希望这会对你有所帮助。
答案 3 :(得分:-2)
尝试这个;
转到外观然后点击Widget, 打开小部件后,单击Primary Widget区域, 你会看到“类别” 只需单击,按住鼠标左键并移至 “非活动小部件”组。 当你回到你的网站时,你将不会再看到未分类。 : - ))