海天无影's Blog

wordpress首页不显示某个栏目文章的完美方法

/ 0评 / 0

刚刚把老博客的文章导入到新博客的数据库,这样就完成了博客重生时的承诺,最主要是看到数据库里之前博客的文字,莫名的怀旧。

把之前的文章在数据库里归到了一个栏目里,然后决定将栏目隐藏,在网上看了很多个wordpress首页不显示某个栏目文章的方法,但是都有一些缺陷。

比如说:

if (have_posts()) 或 while (have_posts())
在下面添加:
<?php if (in_category('42') && is_home()) continue; ?>

这个栏目的文章是在首页不显示了,但是分页却出卖了文章的数量,显示的是实际的文章数量的分页。

还有处理index 文件中的if (have_posts()) 或 while (have_posts()) ,在前面 添加:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
    // 不想显示的分类ID,多个用半角逗号隔开
    'category__not_in'   => array(42),
    'paged' => $paged
);
query_posts($args);

但这样处理后,这个栏目页直接无法访问了,海天还是想要可以通过栏目页来手动浏览的。并且发现有的主题的 tags 的栏目页面也会出现归档错误的问题。

最后找到这个办法,目前是完美解决了wordpress首页不显示某个栏目文章的问题,而且上面说的几个不足都没有出现。

在主题下的functions.php中添加下面的代码即可。

function ex_cat_on_homepage( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'cat', -985 );
    }
}
add_action( 'pre_get_posts', 'ex_cat_on_homepage' );

发表评论

电子邮件地址不会被公开。