在 WordPress 默认模板中,主循环调用文章的代码格式如下:
<?php if (have_posts()) : ?> <?php while (have_posts()) : the_post(); ?> //主循环内容 <?php endwhile; ?> <?php endif; ?>
默认情况下,文章调用范围为所有分类。如果排除某分类,可以使用 query_posts() 函数:
<?php query_posts('cat=-1'); ?>
以上代码调用除分类 ID 为 1 外的所有文章。将其插入主循环前即可。
由于 query_posts() 函数会与分页功能造成冲突,可以将 query_posts() 语句替换为:
<?php
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('cat=-1&showposts=' . $limit=10 . '&paged=' . $paged);
?>
若需排除特定分类,又要保持分页功能正常,则完整代码如下:
<?php
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('cat=-1&showposts=' . $limit=10 . '&paged=' . $paged);
?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
//主循环内容
<?php endwhile; endif; ?>
版权所有,转载请注明出处。
转载自 <a href="http://www.mangguo.org/wordpress-main-loop-exclude-specific-category/" title="WordPress 主循环排除特定分类" rel="bookmark">WordPress 主循环排除特定分类 | 芒果</a>

已经有 7 条评论
- bolo - 2009-06-05 12:57
#1貌似不用弄的这么复杂,用 exclude 函数就可以了。 回应
- seri - 2009-06-05 17:50
#2bolo 说的对,代码可以百度一下。
PS:芒果童鞋,你可以给你的 menu 的 li 里加 display:block,这样点击链接,会更方便! 回应
- 芒果 对 说 - 2009-06-05 18:05
#3主循环里排除特定分类用 exclude 好像不行。 回应
- seri - 2009-06-05 22:30
#4可能应用不一样,代码不一样。
PS:对了,应该是在 menu 的 li 里的 a 标签里加 display:block 样式。 回应
- 在 Wordpress 循环中排除某分类 » Life Studio - 2010-01-10 15:28
#5[...] 以上方法转自:芒果-WordPress 主循环排除特定分类 [...] 回应
- 在 Wordpress 循环中排除某分类 — 老孙的博客--Lao Sun's Blog - 2010-02-18 13:59
#6[...] 以上方法转自:芒果-WordPress 主循环排除特定分类 [...] 回应
- TIPS的网志 » 在 Wordpress 循环中排除某分类 - 2010-07-12 21:31
#7[...] 以上方法转自:芒果-WordPress 主循环排除特定分类 [...] 回应
我简单说几句