wordpress首页去掉home_wordpress首页去掉home


WordPress作为博客站点很好用,但可惜的是没有微博/twitter之类快速短文的功能,如果设置一个分类来放置这类短文,首页又会显得杂乱而没有章法,按照网络上的教程,这个问题有几种解决办法,自己采用了最简单省事的一种。即修改index.php文件下的内容。

首先要找到分类目录对应的ID值,我不想在首页显示的分类命名为闲言碎语,但是对应的内部ID并不是这个,要看到文章对应的ID,需要在Wordpress管理后台,在文章–>分类目录下,点开可以看到自己的所有文章分类,把鼠标放在某个目录上(注意,只要放上去就可以,不要点击)在浏览器最下面的菜单栏可以看到类似category&tag_ID=3这样的内容,其中tag_ID对应的数字就是该目录的ID值,记住不想显示的目录ID值,为后续做准备。

在外观–>编辑菜单下,可以打开站点主题的模板文件进行编辑,右上角是选择要编辑的主题,默认应该是当前正在用的主题(编辑其他主题没有用),在下面的主题文件中找到首页模板 index.php,一般来说,首页都是循环遍历文章(这句是抄来的),可以看到if ( have_posts() ) : 以及(或者)while ( have_posts() ) : the_post();字样的代码,在后面这句代码下增加一行代码来排除自己不想在首页显示的分类文章即可。if (in_category(‘ 1’) && is_home()) continue; 将小括号中的1修改为不想显示的目录ID编号,如果要屏蔽多个目录,只需要复制多次这段代码即可。如果所用的模板每行都单独用<?php 样式隔离开,那么新增代码也要这么包起来。以下是一个示例


get_header(); ?>
 
    <div id="primary" class="content-area">
        <div id="main" role="main">
 
        <?php if ( have_posts() ) : ?>
 
            <div id="masonry-container"  class="site-main js-masonry" data-masonry-options='{"itemSelector": "article" }'>
            <?php /* Start the Loop 加入禁用的分类id*/ ?>
            <?php while ( have_posts() ) : the_post(); ?>
               <?php if (in_category(' 3') && is_home()) continue; ?>
               <?php if (in_category(' 4') && is_home()) continue; ?>

                <?php
                    /* Include the Post-Format-specific template for the content.
                     * If you want to override this in a child theme, t


当然,这个修改方式有两个后遗症。第一:如果更换了主题,那么就又要重新设置一次;第二:如果升级了主题文件,那么也极有可能要重新来一遍。网上另外一个解决方法是增加一个函数来实现,但是这个方法我没有尝试过,而且也同样存在上述的后遗症。暂记录下来,这个方法是修改custom-function.php或者function.php文件,并在最后(但是这个标志之前 ?>)增加自己的代码,其中数字6,7就是要屏蔽的目录ID编号。


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