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などで拾うものに関しては、この方法でいけると思います。今回紹介した内容とは逆に『特定カテゴリ・特定記事を拾う』というのもできるので、記事表示などもうまくコントロールしてみてください。

WordPressサイト制作&リニューアル・機能開発サービス | アトリエSS


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

  関連記事

【WordPressでPHPプログラムを学習シリーズ1】用語:PHP変数・関数・定数を、WPの機能を通して覚える
【別に止めなくてOK】WordPressサイトなどに、アメブロ・fc2など無料ブログの更新情報を表示して連携する方法
【PHPプログラミング】PDOクラスを使って、WPのget_post_metaで取れないプラグイン独自テーブルを取得する
【LaravelベースのCMS】PYRO CMSのローカルインストール方法や使用感など紹介
WordPress一覧表示で、特定のカテゴリ/投稿を表示しないようにするには?→category_not_in・post_not_inで
【PHP】カウントダウン機能に使える?array_reverseで配列要素を逆に,パラメーター挙動&array_flipとの違い
PHP・shuffleやarrayを使った、画像ランダム表示方法~メインビジュアルやバナー・テキストにも利用可能
【PHPプログラミング】メモ帳に適当にメモったPV数値をexplodeで配列にし、array_sumで合計値を計算する
テスト環境(ローカル含む)でPHPサイト開発に使えるツール&XAMPPでやってみた例(設定や表示ファイルetc)
WordPress記事一覧ページの『本文からの抜粋』を表示する関数と、その文字数の調整方法をチェックする
【超危険】WordPressデータベースリビジョンお掃除
【WordPress別サーバー引っ越し】SQLエクスポート/インポート&Redirectionプラグインを使った方法