WordPress記事一覧から特定の記事を除外する

WordPressのホームページ(最初のページ)に表示される最新記事一覧から特定の記事を外す方法を解説します。

概要

色々な方法があるかと思いますが、手軽に行えるWordPressプラグインのアクションフックの「pre_get_posts」アクションを利用してみます。

除外する記事の指定の仕方で、2種類の方法を解説します。
1.除外する記事をカテゴリで指定する方法
2.場外する記事を投稿ID(post_id)で指定する方法

では、それぞれに付いて解説します。

1.除外する記事をカテゴリで指定する方法

例としてカテゴリ1とカテゴリ2と・・・を除外する場合
ソースコードはこうなります。

function exclude_category( $query ) {
  if ( $query->is_home() && $query->is_main_query() ) {
    $query->set( 'cat', '-カテゴリ1ID, -カテゴリ2ID,・・・' ); 
  }
}
add_action( 'pre_get_posts', 'exclude_category' );

除外するカテゴリID(番号)の前に”-“半角マイナス記号を付け記述します。
除外するカテゴリが複数ある場合は、半角カンマで区切って記述します。

カテゴリIDの調べ方

WordPressの管理メニューから
「投稿」の「カテゴリー」をクリックします。

カテゴリ一覧表で調べたいカテゴリの名前の上にカーソルを合わせると、ページの下にリンクアドレスが表示されます。
そのリンクアドレスの「tag_ID=XXXX」のXXXXカテゴリIDです。
(例では、カテゴリ”MySQL”のカテゴリIDは、194)

2.場外する記事を投稿ID(post_id)で指定する方法

例として記事1と記事2と・・・を除外する場合
ソースコードはこの様になります。

function exclude_single_posts_home( $query ) {
 if ( $query->is_home() && $query->is_main_query() ) {
    $query->set( 'post__not_in', array( 記事1ID, 記事2ID ,・・・) );
  }
}
add_action( 'pre_get_posts', 'exclude_single_posts_home' );

配列として、除外したい記事の投稿ID(番号)を記述します。
除外したい記事が複数有る場合は、記事の投稿IDを半角カンマで区切って記述します。

記事の投稿IDの調べ方

WordPressの管理メニューから
「投稿」の「投稿一覧」をクリックします。

投稿の一覧表示のID列の数字が投稿ID(post_id)にあたります。

実践:WordPressホームページ記事一覧から特定の記事を除外する

このサイトでは、ノウハウ情報のランキングページが8ページ有りますが、
毎日上書き更新しているため、年中ホームページがこのランキング記事で独占されています。
このランキングの投稿記事をホームページの最新記事一覧から除外してみようと思います。

変更前の当サイトホームページ(初期表示ページ)

除外する投稿リストの投稿IDを取得する

まず、除外するランキング記事8ページの投稿IDを調べます。
「【コミュニケーション・恋愛】総合ランキング」の投稿IDは、1966
「【エンターテイメント】総合ランキング」の投稿IDは、1963
「【学習・自己啓発】総合ランキング」の投稿IDは、1958
「【美容・健康】総合ランキング」の投稿IDは、1955
「【生活】総合ランキング」の投稿IDは、1951
「【インターネット・アクセスアップ】総合ランキング」の投稿IDは、1948
「【投資・仮想通貨】総合ランキング」の投稿IDは、1940
「【ビジネス・稼ぐ】総合ランキング」の投稿IDは、1926
でした。

ソースコードを編集する

先程説明の「2.除外する記事を投稿ID(post_id)で指定する方法」のソースコードに、投稿IDを入れます。
除外するページは複数あるので、array()の中身に半角カンマで区切ってIDを羅列します。
(もし除外記事が1つの場合は、array()中身は、1つの除外IDのみになります。)

function exclude_single_posts_home( $query ) {
 if ( $query->is_home() && $query->is_main_query() ) {
    $query->set( 'post__not_in', array( 1966, 1963, 1958, 1955, 1951 ,1948, 1940, 1926) );
  }
}
add_action( 'pre_get_posts', 'exclude_single_posts_home' );

になります。

ソースコードを適応

編集したソースコードがサイトのページが読み込まれた時に実行するためには、
WordPressの「fanctions.php」ファイルへ書き込みます。

WordPressの管理メニューから
「外観」の「テーマエディター」をクリックします。

テーマの編集ページで

テーマファイルを「functions.php」を選択して

空いてる部分にソースコードを書き込み、

「ファイルを更新」をクリックします。

これで完了です。

WordPressホームページ記事一覧から特定の記事を除外した結果とまとめ

このサイトで適応してみたので、ホームページを表示してみます。
ホームページの最新投稿記事一覧に、除外設定したノウハウ情報ランキングの全て(8ページ)は、表示されなくなりました。

なお、ホームページの記事一覧から除外したページは、ページ自体削除された訳ではないので、メニューやカテゴリー選択から読み出すことはできます。
また、「functions.php」へ今回書き込んだソースコードを削除すれば、除外した記事は、ホームページの最新記事一覧に復活させることが出来ます。

今回は「pre_get_posts」を利用したホームページの記事一覧から、カテゴリーを指定した記事の除外、投稿IDを指定した記事の除外方法を説明しましたが、他にも、ホームページの記事一覧に関する表示方法が色々とあります。
調べてみたい方は、以下をサイトが大変参考になると思います。