スキルアップを始める!

【WordPress】「パスワード保護」の投稿を一覧ページから非表示にする方法|php

WordPress(ワードプレス)
WordPress(ワードプレス)
この記事は約2分で読めます。

※記事中に広告情報を含みます。

\ワードプレスのスキルアップはこちら!/ WordPress入門読本

ワードプレスには、標準でページにパスワード設定が出来る「パスワード保護」機能があります。

ただ、こちらのパスワード保護ページ、標準だと記事一覧ページやインデックスページに表示されるようになっています。

パスワード保護しているページなので、インデックスページに表示されたくない…という時に、こちらを非表示にする方法です。

pre_get_posts

投稿の一覧から特定の何かを非表示などする場合は「pre_get_posts」が役に立ちます。

pre_get_postsのフックはクエリ変数オブジェクトの生成後、実際にクエリが実行される前に呼び出されます。

諸条件を色々考えるならもう少し設定が必要かもしれませんが、ひとまずこれだけで「パスワード保護」のページが消えます。

function password_post_exclude($query) {
$query->set('has_password', false);
}
add_action('pre_get_posts', 'password_post_exclude');

一覧から消えました!

ただし、このままだと管理画面の投稿一覧からも表示が消えてしまいます。

全ての場所から消えてしまいました。

投稿ページからも見えなくなります。

これでは意味が無くなってしまうので、ひと工夫してみます。

is_singular() || is_admin()

投稿ページと管理画面では表示させておきたいので、ひと工夫入れてみます。

function password_post_exclude($query) {
  if(is_singular() || is_admin()) {
    return;
  }
$query->set('has_password', false);
}
add_action('pre_get_posts', 'password_post_exclude');

投稿ページと管理画面を除外すれば、表示されるようになります。

まとめ

この方法で「パスワード保護」の投稿を一覧ページから非表示にすることができます。ただし、phpを扱うことになりますので、操作はくれぐれも慎重に行う必要があります。

バックアップ等は必ず取っておきましょう。

URLをコピーしました!