WordPressのトップページは、あなたの最高のコンテンツを紹介するものです。しかし、そこにふさわしくないカテゴリーがあったらどうしますか?その場合、特定のカテゴリーをホームページから除外することができます。
デフォルトでは、WordPressはすべてのカテゴリーの投稿をホームページに表示します。これは、特に社内向けや特定の読者向けのカテゴリーがある場合、雑然とした体験につながる可能性があります。
この記事では、WordPressのホームページからカテゴリーを簡単に除外する方法を2つご紹介します。
なぜWordPressのホームページからカテゴリーを除外するのか?
WordPressでは、コンテンツをカテゴリーやタグに分類することができます。通常のブログエントリーの一部ではない投稿にカテゴリーを使いたい場合もあるでしょう。
WordPressの初期設定では、特定のカテゴリーの投稿をホームページやアーカイブから非表示にすることはできません。そのため、不要な投稿がホームページ上に表示されることになります。
それでは、WordPressのホームページから特定のカテゴリーを簡単に除外する方法を見てみましょう。ここでは、2つの異なる方法を紹介しますので、あなたのニーズに最も適した方法を選んでください。
方法1:プラグインを使用してWordPressからカテゴリーを除外する
まず最初に行う必要があるのは、Ultimate Category Excluderプラグインをインストールして有効化することです。詳しくは、WordPressプラグインのインストール方法をご覧ください。
有効化したら、設定 ” カテゴリー除外のページに行く必要があります。WordPressブログで利用可能なすべてのカテゴリーが表示されます。
ここから、「フロントページから除外する」列の下にある1つまたは複数のカテゴリーをチェックするだけです。必要であれば、RSSフィード、アーカイブ、WordPress検索からカテゴリーを除外することもできます。
更新』ボタンをクリックして、これらの設定を保存することをお忘れなく。
これで、選択したカテゴリーからの投稿がフロントページから除外されていることを、あなたのサイトで確認することができる。
方法2:コードを使用してWordPressのホームページからカテゴリーを除外する
この方法では、WordPressファイルにコードを追加する必要があります。WordPressでコード・スニペットをコピー&ペーストする方法をご覧ください。
テーマのfunctions.phpファイル、サイト固有のプラグイン、またはcode snippetsプラグインに以下のコードを追加する必要があります。
function exclude_category_home( $query ) {
if ( $query->is_home ) {
$query->set( 'cat', '-5' );
}
return $query;
}
add_filter( 'pre_get_posts', 'exclude_category_home' );
ID(-5)をカテゴリーIDに置き換えるのを忘れないでください。このIDに一致するカテゴリーに属するすべてのブログ投稿をホームページから非表示にします。
注:カテゴリーIDには必ずマイナス(-)記号を付けてください。
カテゴリーIDの見つけ方がわからないですか?WordPressでカテゴリーIDを見つける方法のガイドをご覧ください。
WordPressでこのコードを追加する最も安全で簡単な方法は、WPCodeプラグインを使用することです。WordPressのファイルを直接編集することなく、カスタマイザーのコードを追加することができます。そのため、サイトを壊す心配はありません。
開始するには、無料のWPCodeプラグインをインストールし、有効化する必要があります。WordPressプラグインのインストール方法については、こちらをご覧ください。
WPCodeを有効化したら、WordPressダッシュボードのCode Snippets ” + Add Snippetにアクセスしてください。
次に、「カスタムコードを追加(新規スニペット)」オプションにマウスオーバーし、その下にある「スニペットを使用」ボタンをクリックします。
そこから、画面に表示されるオプションのリストから、コードタイプとして「PHP Snippet」を選択する必要がある。
カスタマイザー作成」ページでは、まずスニペットのタイトルを追加します。これは、何のためのコードなのかを覚えておくのに役立つものであれば何でも構いません。
次に、上記のコードを「コード・プレビュー」ボックスに貼り付ける。
あとは、スイッチを「非活性化」から「有効化」に切り替え、ページ上部の「スニペットを保存」ボタンを押すだけだ。
複数のカテゴリーを除外したい場合は、コードを次のように変更してください:
function exclude_category_home( $query ) {
if ( $query->is_home ) {
$query->set( 'cat', '-5, -9, -23' );
}
return $query;
}
add_filter( 'pre_get_posts', 'exclude_category_home' );
ID(-5、-9、-23)をカテゴリーIDに置き換えるだけで、WordPressのホームページからカテゴリーを除外できます。
WordPressのホームページからカテゴリーを除外する方法について、この投稿がお役に立てば幸いです。また、カテゴリーをより効率的に利用するためのWordPressのカテゴリーハックやプラグイン、またはWordPressのエキスパートが選ぶ最高のお問い合わせフォームプラグインもご覧ください。
If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.
Jiří Vaněk
I initially used the Exclude Category plugin, but as my plugins started to accumulate, I tried your snippet, and it works just as great. Thank you very much for providing the code. It saved me another plugin that I don’t have to have in the system.
Joseph
Will using the Ultimate Category Excluder plugin block Googlebot from crawling posts in that particular category? I don’t want my site users to access a particular category.
WPBeginner Support
As long as the pages can be found in some way by Google from something like a sitemap or other page on your site then there the crawler would be fine.
管理者
Johan
As always: a huge THANKS for all your great tutorials!
Excluding a category the functions.php-way works great for me. BUT: I find that the same category is also excluded from a custom WP_Query that I put on a profile page. Why is that?
My query:
$the_query = new WP_Query( array( ‘meta_key’ => ‘fetcher’, ‘meta_value’ => $user_ID ) );
WPBeginner Support
Glad it was helpful, the code should only affect the home page, one possibility you could check would be to see if your caching could be the culprit.
管理者
Johan Hagvil
I found the solution!
Changing the second line of my snippet to:
if ( $query->is_main_query() && $query->is_front_page() ) {
WPBeginner Support
Thank you for sharing for anyone else who may be running into the same error!
metin
Let’s assume the id of the blog category is 1. Can I add php code about showing all ids greater than -2 so that it doesn’t show all categories greater than 1. Can there be a method that will work with php code that will work dynamically instead of adding an id every time?
WPBeginner Support
For what you’re wanting to achieve, it would be better to select the categories you want to show instead of trying to exclude all other categories. You can see how to do this in our article below!
https://www.wpbeginner.com/wp-tutorials/how-to-display-recent-posts-from-a-specific-category-in-wordpress/
管理者
Isaac
thanks genius this works perfectly
WPBeginner Support
Glad our guide was helpful
管理者
Abdullah Al Muaz
thanks dude. it works.
Abdullah Al Muaz
i use a specific page to display recent posts. so i think for my case it should not be /code $query->is_home /code
what should i put instead of “home”
i want to hide specific category from “blog”
WPBeginner Support
The code should work the same for your blog page if you set a page for your recent posts.
管理者
MENHADI HASAN
Hi,
How to exclude whole category and custom from the search form or can I modified search form to just search by a specific taxonomy rest all are excluded from the search
WPBeginner Support
For hiding content from your search, you would want to take a look at our page here: https://www.wpbeginner.com/plugins/how-to-exclude-specific-pages-authors-and-more-from-wordpress-search/
管理者
Sidchan Mall
Thanks for the tip, I began using the plugin to exclude theme-specific content posts (testimonials, sliders) on my website!
WPBeginner Support
You’re welcome, glad our guide could help
管理者
Paolo
I followed the Method 2 instructions, but after the change the media library doesn’t work anymore!
WPBeginner Support
The code should not affect your media library unless there is a larger error that is affecting your site. It would depend on the error message for the reason.
管理者
Christopher
Thanks for this article.
I want to ask if it’s also possible to exclude Google Adsense ads from some specific categories