パスワード保護された投稿は非公開にするためのものですが、WordPressではブログリスト、アーカイブ、検索結果にタイトルが表示されてしまいます。誰かがクリックしてパスワード画面に遭遇すると、混乱を招く可能性があります。
特にコンテンツがクライアント、メンバー、または内部使用のみを目的としている場合、これは最良の印象を残しません。😓
良いニュースは、これらの投稿をWordPressループ(ホームページ、アーカイブ、検索結果に表示される投稿リスト)から完全に非表示にできることです。当社のテストでは、WPCodeがこれを実現する最も簡単で信頼性の高い方法であることがわかりました。
このガイドでは、プライベートコンテンツを真にプライベートに保つための簡単な方法をいくつかご紹介します。さまざまな方法をテストしましたので、サイトを壊したり、実際に必要としている人へのアクセスをブロックしたりすることなく、パスワード保護された投稿を削除できます。

WordPressでパスワード保護された投稿を非表示にする理由
WordPressでは、コンテンツ自体がロックされているにもかかわらず、サイト全体に「保護済み」というラベル付きでパスワード保護された投稿が表示されます。特定のコンテンツを完全にプライベートにしたい場合は、これは問題です。
パスワードを持っていない人でもタイトルを見ることができ、意図した以上の情報を明らかにする可能性があります。また、コンテンツを期待して投稿をクリックしたのにパスワード入力を求められた訪問者を混乱させる可能性もあります。

さらに、これらの投稿は望まない注目を集める可能性があります。タイトルが表示されるため、誰かがさまざまなパスワードを試してアクセスしようとする可能性があります。特にコンテンツが価値がある、または機密性が高いように見える場合です。
そのため、多くのサイト所有者は、パスワード保護された投稿をWordPressループから完全に非表示にすることを選択します。これを実行すると、プライベート投稿は、すでにアクセス権を持っている人がいない限り、フロントエンドのどこにも表示されなくなります。
これを踏まえて、パスワード保護された投稿をWordPressループから非表示にして、他のユーザーに見られないようにする方法を説明します。以下に、実行するすべてのステップの概要を示します。
早速始めましょう!
ステップ 1. コードスニペットプラグインをインストールする
サイトに特定の変更を加えるために、一部のWordPressの専門家は、テーマのfunctions.phpファイルにカスタムコードスニペットを追加するように言うかもしれません。
この方法はあまり初心者向けではなく、ウェブサイトを破損させるリスクがあるため、推奨しません。代わりに、コードスニペットプラグイン(例:WPCode)を使用してこの作業を行うことができます。
WPCodeは市場で最高のコードスニペットプラグインです。当社のパートナーブランドの中には、カスタムコードスニペットをウェブサイトに追加および管理するためにこれを使用しており、彼らはそれを気に入っています。
プラグインに関する詳細情報は、WPCodeの完全レビューでご覧いただけます。

🧑💻 専門家のアドバイス: このチュートリアルは、WPCode の無料版で完璧に動作します。複数のカスタムコードスニペットを定期的に追加または管理している場合は、WPCode Pro にアップグレードすると、コードのスケジュール設定、完全な改訂履歴など、便利な追加機能を利用できます。
まず、WPCode プラグインをインストールして有効化してください。
WordPress のダッシュボードから、プラグイン » 新規追加 に移動します。

次の画面で、検索バーを使用して WPCode を検索できます。
結果に表示されたら、「今すぐインストール」ボタンをクリックし、次に「有効化」をクリックしてサイトでプラグインの使用を開始します。

WordPress が初めての場合は、WordPress プラグインのインストール方法に関するガイドをご覧ください。
ステップ2. WordPressでパスワード保護された投稿を非表示にする
プラグインを有効化したら、WordPress管理画面からコードスニペット » + スニペットを追加に移動してください。
次に、「カスタムコードを追加(新規スニペット)」セクション内の「カスタムスニペットを追加」ボタンをクリックするだけです。

次の画面で、カスタムスニペットのコードタイプを選択する必要があります。
このチュートリアルでは、「PHPスニペット」オプションを使用します。

カスタムコードスニペットエディタにリダイレクトされます。
ここから、カスタムスニペットに名前を付ける必要があります。明確な名前、例えば「パスワード保護された投稿を非表示にする」を使用することをお勧めします。これにより、後でカスタムコードスニペットの整理が容易になります。
次に、次のコードを「コードプレビュー」ボックスに追加するだけです。
function wpb_password_post_filter( $where = '' ) {
if (!is_single() && !is_admin()) {
$where .= " AND post_password = ''";
}
return $where;
}
add_filter( 'posts_where', 'wpb_password_post_filter' );
このコードは、WordPressにパスワードが付与された投稿を探し、クエリから除外するように指示します。これにより、ホームページやアーカイブのようなリストに表示されなくなりますが、直接リンクからは引き続きアクセスできます。
エディタではこのようになります:

この時点で、「非アクティブ」スイッチを「アクティブ」に切り替える必要があります。
次に、「スニペットを保存」をクリックします。

デフォルトでは、WPCodeはコードスニペットをWordPressサイトのすべての場所に自動的に適用します。
これで、ウェブサイトにアクセスすると、パスワードで保護された投稿がホームページ、アーカイブ、または最近の投稿のようなウィジェットに表示されなくなっていることがわかります。

直接URLにアクセスすることで、投稿を閲覧できることを覚えておいてください。
ボーナスヒント:特定のユーザーに保護された投稿へのアクセスを許可する
上記の例では、パスワードで保護された投稿がすべてのユーザーから非表示になります。しかし、マルチオーサーのWordPressサイトを運営していて、プライベート投稿を編集する権限を持つユーザーには保護された投稿を表示させたい場合はどうでしょうか?
これを行うには、前のステップで作成したスニペットを編集する必要があります。以前に追加したコードを削除し、この新しいスニペットに置き換えるだけです。
function wpb_password_post_filter( $where = '' ) {
if (!is_single() && !current_user_can('edit_private_posts') && !is_admin()) {
$where .= " AND post_password = ''";
}
return $where;
}
add_filter( 'posts_where', 'wpb_password_post_filter' );
この例では、ユーザーがプライベート投稿を編集できないことを確認し、パスワードのない投稿のみを表示します。
これにより、管理者およびエディターの役割を持つすべてのWordPressユーザーは、サイトのフロントエンドでパスワード保護された投稿を見ることができます。
WordPressでパスワード保護された投稿を非表示にすることに関するFAQ
パスワード保護された投稿を非表示にするとどうなるか気になりますか?読者からよく寄せられる質問と、このアプローチがあなたのサイトに適しているかどうかを判断するのに役立つ明確な回答を以下に示します。
WordPress でパスワード保護された投稿を非表示にしたいのはなぜですか?
パスワード保護された投稿を非表示にすることは、サイトをクリーンでプロフェッショナルに見せるのに役立ちます。また、不正な訪問者がプライベートコンテンツの存在を知るのを防ぎ、アクセス試行のリスクを軽減し、サイトをより安全に保ちます。
パスワードで保護された投稿を非表示にするために、テーマファイルを編集する必要がありますか?
いいえ、テーマファイルを直接編集する必要はありません。カスタムコードスニペットを使用できます。WPCodeのようなプラグインを使用すると、サイトを壊すことなく安全かつ簡単にコードを追加できます。
これらを非表示にすると、許可されたユーザーの可視性に影響しますか?
全く必要ありません。ログイン中のメンバーや特定のロールを持つユーザーなど、権限のあるユーザーは、正しいパスワードまたは権限を持っている限り、直接投稿にアクセスできます。
これを助けることができるのはWPCodeだけですか?
WPCodeは最も簡単で信頼性の高いオプションの1つであり、それが推奨する理由です。とはいえ、他のプラグインも利用可能です。メンテナンスが行き届いており、テーマや他のツールと互換性のあるものを選ぶようにしてください。
パスワード保護された投稿を非表示にすると、サイトのSEOに影響しますか?
これらの投稿をホームページやアーカイブから非表示にしても、SEOに悪影響はありません。実際、公開されているコンテンツを検索エンジンにとってより焦点を絞り、関連性の高いものに保つことで、改善される可能性があります。
WordPress会員制サイト管理のためのその他の役立つガイド
この記事が、サイトのWordPressループからパスワードで保護された投稿を非表示にするのに役立ったことを願っています。
また、以下のチュートリアルも参照してください。
- WordPressでログインユーザーに異なるメニューを表示する方法
- WordPressでプライベート投稿と保護された投稿のプレフィックスを変更する方法
- WordPress でパスワード保護された投稿の抜粋を表示する方法
- WordPressアーカイブページでの全文と概要(抜粋)の違い
- WordPressでコンテンツを保護するさまざまな方法
この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterやFacebookでもフォローできます。

Abby Buzon
これはメインフィードではうまくいきました。ありがとうございます!数コメント前のマークと同じような問題を抱えていますが、最近の投稿ウィジェットで問題が発生しています。PW保護された投稿が最近の投稿リストに表示され続けます。
WPBeginnerサポート
最近の投稿ウィジェットの動作を変更するプラグインをお持ちですか?
管理者
Abby Buzon
いいえ、なぜですか?そのスニペットは、最近の投稿ウィジェットからもそれらを非表示にする必要がありますか?
WPBeginnerサポート
パスワードで保護された投稿を最近の投稿ウィジェットから非表示にする必要があります。サイトにキャッシュがある場合は、ウィジェットのキャッシュ情報が表示されている場合に備えて、必ずクリアしてください。もう1つの可能性は、当社のコード以外のものがウィジェットが使用しているクエリを変更していることです。
デビッド・ブラウン
コードで*実際に*どのように行うかを説明していただきありがとうございます。「wpbeginner.com」という名前のサイトからは予想していませんでした!(ちなみに、2024年とWP 6.5.2でも引き続き機能します。)
多くのサイトがソリューションを提供しているように見せかけていますが、実際には単純なことを複雑にし、パッチが適用されない脆弱性に対してサイトをさらけ出すプラグインの使用を求めています。
WPBeginnerサポート
It would depend on the site and plugin as plugins can be for simply adding the same code as code from an article without needing to know how to edit files which is why sites recommend them. Glad you found our site and guide helpful
管理者
Rahul Rana
This was very helpful. Thank you very much
WPBeginnerサポート
どういたしまして、ガイドがお役に立てて嬉しいです!
管理者
Vincent Zhang
皆さん、本当にありがとうございます。大変助かりました。感謝しています。プラグインを使わないこのような投稿をこれからも続けてください。
WPBeginnerサポート
プラグイン不要のソリューションが利用可能になったら、必ず含めるように努めます。
管理者
Louis Burkhardt
ありがとうございます。うまく機能します。
Mark
サイト固有のプラグインを作成し、これらの手順に従ったところ、サイトの「投稿」ページで投稿を非表示にすることができました。しかし、個々の投稿の「関連記事」ウィジェットでは、投稿は引き続き表示されます。(上記の画像と非常によく似ていますが、パスワード保護された投稿はまだ表示されています。)
これを修正するために何かできることはありますか?
Alex
read_private_postsができる場合に投稿を表示するように、独自のコード調整を行いたいと考えていました。function remove_password_protected_posts( $where = ” ) {
if (!is_single() && !current_user_can(‘read_private_posts’) && !is_admin() ) {
$where .= ” AND post_password = ””;
}
return $where;
}
add_filter( ‘posts_where’, ‘remove_password_protected_posts’ );
いつもながら素晴らしい投稿です。ありがとうございます。
ハリン
こんにちは皆さん
以下のコードでサイト固有のプラグインを作成しました。
次世代ギャラリーを投稿に添付しようとすると、ギャラリーが読み込まれません。プラグインを無効にするとすぐに、次世代ギャラリーは元に戻ります。
Regards
ブランダン
このスニペットをありがとうございます。とても参考になります!
これらの投稿をRSSフィードから非表示にすることに関して、このスニペットを見つけました。
function rss_filter_protected($query) {
if ($query->is_feed) {
add_filter('posts_where', 'rss_filter_password_where');
}
return $query;
}
add_filter('pre_get_posts','rss_filter_protected');
Chris
素晴らしいヒントをありがとうございます!
しかし、あなたのコードスニペットでループから非表示になっているこれらの投稿は、RSSフィードからも非表示になりますか?
Louis Burkhardt
単一のテストに基づくと、パスワード保護された投稿はRSSフィードから非表示になります。