WordPress一覧表示で、特定のカテゴリ/投稿を表示しないようにするには?→category_not_in・post_not_inで

      2021/02/23   1955文字

今回は、WordPressの公式フォーラムを見ていたら、『一覧から特定のカテゴリ/投稿を表示しないようにするにはどうする』みたいなことを書いていた人がいたので(特に面識はありません)、それに対し、管理人が以前やってみた方法で対処できそうだったのでご紹介します。
get_posts(内部ではWP_QueryをつかうのでWP_Queryでも可)に配列でパラメータ渡すときに、特定の項目を指定することで対処できました。さっそくやり方をみてみましょう。

今回やりたいこと~記事一覧などの部分で、特定カテゴリや特定記事を非表示にする


このサイト(読んどけコラム)の例ですけど、通常こんな風に一覧がでます。デフォルトだと全部のカテゴリ・公開している記事を拾ってしまうので、状況によっては『〇〇は一覧に出したくない』みたいな希望がでてくるかもしれません。

例えば、webのコンサルタントさんのサイトで、『サイトのブランディング上、おすすめとして一覧に出すのはSEO情報とかにして、昨日食ったラーメンの記事は一覧にださない』みたいな感じでしょうか。ユーザー・読者的には、『余計なものが一覧に出てこない』というメリットがあります(状況によっては、一見不必要なお遊び記事を出しておく、という戦略もあるかもしれません。ラーメン屋のサイトでアイドルの話とかね)。

WordPress一覧表示で、特定のカテゴリ/投稿を表示しないようにするには

テーマによって状況が違うかもしれませんが(例えば、一覧をとるときに、直接データベースにSQLを投げてるとか)、get_postsやWP_Queryで記事をとってきて一覧を出すようなタイプだと、以下の方法が使えると思います。ここでは、管理人が作った著作権フリー曲サイトSSFで実装した例を、2つみてみましょう。

特定カテゴリ非表示は、category_not_inで


先日、SSFに実装した『ショートコードでトップで新着記事表示』のプログラムです。get_postsで記事を取ってきて、PHPのforeachでループ回して出力していくタイプです。変数$argは配列で、get_postsに渡すパラメータが入っています。ここでcategory_not_inを指定しました。1番は、非表示にしたいカテゴリ(未分類)のidです。


このように、未分類カテゴリ以外の記事がトップ新着にでました。未分類には曲素材追加の記事がないため、この指定をすることにより、ユーザーはトップから曲素材追加の記事だけに飛ぶことができます。

特定記事を非表示にするときは、post_not_inで


SSFのフィールド検索システムページです。テスト記事を表示モードにしたところ、こちらの一覧でも拾って表示されるようになってしまったので、この記事単体で、一覧非表示をやってみます。


記事取得プログラムの部分。このあとこちらも$posts_array =get_posts($args);みたいにして、foreachで回します。その前に、先ほどと同じようにパラメーター指定。こちらはpost_not_inとid指定をしました。非表示にしたいテスト記事のidは890番。


出てこなくなりました。成功です。

参考リンク(codex)

あとがき・まとめ

  • get_posts・WP_Queryなどで記事を拾っている場合は、パラメータ指定で非表示ok
  • 特定カテゴリを非表示にするときはcategory__not_inを使う
  • 特定の投稿を非表示にするときはpost__not_inを使う

まとめるとこんなところでしょうか。直接SQL投げているテーマでは別の方法でやるかもしれませんが、通常のget_posts・WP_Queryなどで拾うものに関しては、この方法でいけると思います。今回紹介した内容とは逆に『特定カテゴリ・特定記事を拾う』というのもできるので、記事表示などもうまくコントロールしてみてください。


【カテゴリ】 - PHP・データベースetc
【タグ】 - ,

  関連記事

【WordPress組み込み関数】is_home()とis_front_page()って同じ?→似てますが、厳密には挙動が異なります
【超危険】WordPressデータベースリビジョンお掃除
テスト環境(ローカル含む)でPHPサイト開発に使えるツール&xamppでやってみた例(設定や表示ファイルetc)
侍エンジニア塾ブログにあったPHPコードをシンプルに書いてみる(foreachで配列キーや値取得・continueで空要素スキップ)
【WordPressカスタムフィールド検索】meta_queryで、シリアライズ値が入ったフィールドを持つ記事をヒットさせるには?
【WPカスタマイズ】プラグイン不使用、テーマに関連記事表示機能を実装しPV・滞在時間を上げる
【WordPressで覚えよう】PHP「->」(オブジェクト演算子/アロー演算子)・「=>」(ダブルアロー演算子)の違い
PHP・mb_substr関数を使って、タイトル文字数を揃える(WPレイアウト調整)
【別に止めなくてOK】WordPressサイトなどに、アメブロ・fc2など無料ブログの更新情報を表示して連携する方法
【WordPressでPHPプログラムを学習シリーズ1】用語:PHP変数・関数・定数を、WPの機能を通して覚える
【PHP etc.プログラム学習サイトコードコピペ】全角引用符・バッククオートが入ってて動かない件に注意
【PHP】GD・ImageFilterで、画像の色合いを変えてみる