WordPress首页指定分类显示/隐藏

WordPress首页排除某个分类的文章,或者建立一个独立页面指定分类目录显示。大概有很多人有这个需求把,之前也有好多人问我,索性写个详细教程好了。

其实有个插件能够解决这个问题的;Advanced Category Excluder 他的功能是可以通过在特定页面(如:搜索结果页,RSS ,分类列表页面或者日志页面)隐藏特定分类来增强 WordPress的功能。

下面来说说免插件的方法;

要指定某个分类显示或者隐藏,首先需要知道它的分类id(这个就不用教了把)

示例一:首页排除分类id=1,2,3

打开当前页面模版blog.php(具体视主题而定,这里采用hotnewspro主题本地测试),找到如下语句

<?php if (have_posts()) : ?>      
<?php while (have_posts()) : the_post(); ?>

the_post() 函数是来调用所有的博客文章。 我们还可以使用 query_posts 函数来控制。这需要定义在WP_Query中的参数,即修改 $query = new WP_Query( $args );.

我们在<?php if (have_posts()) : ?>这段代码,之前添加如下代码

<?php      
$temp = $wp_query;      
$wp_query= null;      
$wp_query = new WP_Query();      
$wp_query->query('&caller_get_posts=5'.'&cat=-1,-2,-3'.'&paged='.$paged);      
?>

其中:caller_get_posts=5 排除置顶文章,cat=-1,-2,-3 排除ID为1、2、3的分类文章,多个分类用半角(英文)逗号分开,如果数字前不加“-”就是只显示ID为1、2、3的分类文章。

示例二:首页指定显示分类id=1,2,3

我们依然<?php if (have_posts()) : ?>这段代码,之前添加如下代码

<?php query_posts('showposts=15&cat=1,2,3');?>

其中 showposts=15是当前页面总共显示15篇文章,显示指定分类id为1,2,3的分类文章。

拓展:我们通过上面的代码不难看出query_posts可以非常简单的定制你在页面上显示的文章,而且你不必更改现有的循环代码。一般是在 主页文件中找到loop(循环)代码,while(have_posts()):

要显示某些分类的文章,你需要用到 cat 参数:

<?php query_posts( 'cat=1,5,6' );  ?>

同样,要排除某些分类,你需要在前面添加减号:

<?php query_posts( 'cat=-3,-5' );  ?>

还可以用来显示特定的文章:

query_posts( 'p=2' );

要定义每页显示文章的数量,你可以使用 posts_per_page 参数:

query_posts( 'posts_per_page=5' );

参考函数:http://codex.wordpress.org/Template_Tags/query_posts

在网上,还看到一种方法是在主题文件夹下的functions.php中加入以下代码:

function custom_exclude_category( $query ) {   
    if ( $query->is_home() && $query->is_main_query() ) {   
        $query->set( 'cat', '-1,-2,-3' );  //-1,-3表示需要排除的分类目录   
    }   
}   
add_action( 'pre_get_posts', 'custom_exclude_category' );

虽然这方面的插件也不缺,但是我想能自己动手解决的就折腾下把。毕竟这样对你以后继续使用wordpress博客是一个非常大的帮助。

展开评论