如何从主循环中排除具有类别名称而不是ID的类别?

时间:2011-10-04 作者:Steve

我在这件事上打了一个瞌睡,最后不得不停下来问我的第一个问题。通常我可以在这里找到答案,但这次我需要一些帮助。我试图从主循环中排除一个类别,这样它就不会在我的索引页上显示两次。我上下搜索了一下,在这里发现了以下代码:

 <?php
 $category_id = get_cat_ID(\'featured\');
 $q = \'cat=\' . $category_id;
 query_posts($q);
 if (have_posts()) : while (have_posts()) : the_post();

 the_content();

 endwhile; endif;?>
它起作用了,但我的页面导航不起作用。即使你点击了第二页,你仍然可以看到第一页的内容。不知道为什么会这样。我不想排除ID为的类别,因为ID将更改,但名称将始终相同。

这方面的任何帮助都将是巨大的,谢谢!如果您需要演示站点,请询问。

1 个回复
SO网友:Rutwick Gangurde

不能直接传递名称或slug以排除特定类别。您必须使用id。修改代码:

<?php
    $category_id = get_cat_ID(\'featured\');
    //if get_query_var(\'paged\') doesn\'t work, then try using get_query_var(\'page\') in the next line.
    $paged = (get_query_var(\'paged\'))?get_query_var(\'paged\'):1;
    $q = array();
    $q[\'category__not_in\'] = array($category_id);
    $q[\'paged\'] = $paged;
    query_posts($q);
    if (have_posts()) : while (have_posts()) : the_post();

    the_content();

    endwhile;
    endif;
?>
希望这有帮助!

结束

相关推荐

当使用GET_CATEGORIES或类似工具时,是否也可以过滤包含某些标记的结果?

get_categories() 默认情况下,相关函数不会返回空类别-没有帖子的类别。我想,既然可能有一些底层代码检查帖子数量,那么是否可以额外过滤该列表,使其仅包括那些本身包含与特定标记相关联的帖子的类别?或者有没有一种简单的替代方法来获取这些信息?例如,如果我有一些贴子带有“audio”标签,我想用一种方法get_categories() (或类似结果),但仅检索包含带有“音频”标记的帖子的类别列表。我知道我可能必须直接使用标签ID。我只是在寻找“最好的”,或最合适的方式来做到这一点。谢谢