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記事一覧ページの『本文からの抜粋』を表示する関数と、その文字数の調整方法をチェックする
PHP・shuffleやarrayを使った、画像ランダム表示方法~メインビジュアルやバナー・テキストにも利用可能
【WordPressでPHPプログラムを学習シリーズ1】用語:PHP変数・関数・定数を、WPの機能を通して覚える
PHP・mb_substr関数を使って、タイトル文字数を揃える(WPレイアウト調整)
WPデータベースの余計なデータには何がある?事例と対処方法・あるとイヤなケース
テスト環境(ローカル含む)でPHPサイト開発に使えるツール&xamppでやってみた例(設定や表示ファイルetc)
【WPユーザー名バレ対策】ユーザー名表示からPHP・preg_matchでリダイレクト(wp-json/wp/v2/usersなど)
【WPカスタマイズ】プラグイン不使用、テーマに関連記事表示機能を実装しPV・滞在時間を上げる
【WordPress別サーバー引っ越し】SQLエクスポート/インポート&Redirectionプラグインを使った方法
【画像つきでわかりやすい】WordPressで使われるデータは、MySQLデータベースに、どのように格納されているの?
【PHP学習】var_dumpで出力するのと、echoで出力するのは、挙動がどのように違うの?
【WP記事取得クエリ・プラグイン無し】お知らせなどに使える、ショートコードで特定カテゴリ記事を表示プログラム