0

我想按类别列出自定义帖子类型中的所有帖子,所以我想出了这段代码(见下文),但他们看到我想删除这个未分类的类别。我在查询中尝试过,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 -->
4

5 回答 5

3

这已经很老了,但我偶然发现了它,所以如果它与任何人有关,我相信答案是:

由于您通过 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()or 。new WP_Query进一步阅读: https ://developer.wordpress.com/2012/05/14/querying-posts-without-query_posts/

于 2015-04-04T23:01:52.127 回答
1
`query_posts( 'cat=-3' );`

// 3 是您要排除的类别 ID 查看更多参考。关于 query_posts QUERY POSTS

于 2013-08-22T04:09:48.667 回答
0
$args = array('exclude' => array(1));
$categories = get_categories($args);

foreach($categories as $category) {
    echo $category->name;
}

请试试这个我希望这有效。谢谢你。

于 2021-10-06T20:01:25.997 回答
-1

问题是你的报价试试这个:

 query_posts("cat=$cat_id&exclude=1&post_type=locations");

希望这对您有所帮助。

于 2013-08-22T05:02:30.593 回答
-3

尝试这个 ;

转到外观,然后单击小部件,打开小部件后,单击主要小部件区域,您将看到“类别”只需单击,按住鼠标左键并移至“非活动小部件”组。当您返回您的网站时,您将不再看到未分类。:-))

于 2015-02-05T21:32:40.083 回答