在WordPress首頁不顯示某個分類文章的做法

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' );
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章