パスワード保護された投稿は非公開にするためのものですが、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に悪影響はありません。実際、検索エンジンにとって公開されるコンテンツをより焦点を絞り、関連性の高いものに保つことで、SEOを改善することができます。
WordPress会員制サイト管理のためのその他の役立つガイド
この記事が、サイトのWordPressループからパスワードで保護された投稿を非表示にするのに役立ったことを願っています。
また、以下のチュートリアルも参照してください。
- WordPressでログインユーザーに異なるメニューを表示する方法
- WordPressでプライベート投稿と保護された投稿のプレフィックスを変更する方法
- WordPress でパスワード保護された投稿の抜粋を表示する方法
- WordPressアーカイブページでの全文と概要(抜粋)の違い
- WordPressでコンテンツを保護するさまざまな方法
この記事が気に入った場合は、WordPressのビデオチュートリアルのために、YouTubeチャンネルを購読してください。また、TwitterやFacebookでも私たちを見つけることができます。

アビー・ブゾン
これはメインフィードではうまくいきました。ありがとうございます!数コメント前のマークと同じような問題を抱えていますが、最近の投稿ウィジェットで問題が発生しています。PW保護された投稿が最近の投稿リストに表示され続けます。
WPBeginnerサポート
最近の投稿ウィジェットの動作を変更するプラグインをお持ちですか?
管理者
アビー・ブゾン
いいえ、なぜですか?そのスニペットは、最近の投稿ウィジェットからもそれらを非表示にする必要がありますか?
WPBeginnerサポート
パスワードで保護された投稿を最近の投稿ウィジェットから非表示にする必要があります。サイトにキャッシュがある場合は、ウィジェットのキャッシュ情報が表示されている場合に備えて、必ずクリアしてください。もう1つの可能性は、当社のコード以外のものがウィジェットが使用しているクエリを変更していることです。
デビッド・ブラウン
コードで*実際に*どのように行うかを説明していただきありがとうございます。「wpbeginner.com」という名前のサイトからは予想していませんでした!(ちなみに、2024年とWP 6.5.2でも引き続き機能します。)
多くのサイトがソリューションを提供しているように見せかけていますが、実際には単純なことを複雑にし、パッチが適用されない脆弱性に対してサイトをさらけ出すプラグインの使用を求めています。
WPBeginnerサポート
サイトやプラグインによって異なります。プラグインは、ファイルを編集する方法を知らなくても、記事のコードと同じコードを追加するだけのものもあり、それがサイトが推奨する理由です。当サイトとガイドがお役に立てて嬉しいです
管理者
ラフル・ラナ
大変参考になりました。ありがとうございました
WPBeginnerサポート
どういたしまして、ガイドがお役に立てて嬉しいです!
管理者
ビンセント・チャン
皆さん、本当にありがとうございます。大変助かりました。感謝しています。プラグインを使わないこのような投稿をこれからも続けてください。
WPBeginnerサポート
プラグイン不要のソリューションが利用可能になったら、必ず含めるように努めます。
管理者
ルイス・ブルクハルト
ありがとうございます。うまく機能します。
マーク
サイト固有のプラグインを作成し、これらの手順に従ったところ、サイトの「投稿」ページで投稿を非表示にすることができました。しかし、個々の投稿の「関連記事」ウィジェットでは、投稿は引き続き表示されます。(上記の画像と非常によく似ていますが、パスワード保護された投稿はまだ表示されています。)
これを修正するために何かできることはありますか?
アレックス
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’ );
いつもながら素晴らしい投稿です。ありがとうございます。
ハリン
こんにちは皆さん
以下のコードでサイト固有のプラグインを作成しました。
次世代ギャラリーを投稿に添付しようとすると、ギャラリーが読み込まれません。プラグインを無効にするとすぐに、次世代ギャラリーは元に戻ります。
よろしくお願いいたします
ブランダン
このスニペットをありがとうございます。とても参考になります!
これらの投稿を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');
クリス
素晴らしいヒントをありがとうございます!
しかし、あなたのコードスニペットでループから非表示になっているこれらの投稿は、RSSフィードからも非表示になりますか?
ルイス・ブルクハルト
単一のテストに基づくと、パスワード保護された投稿はRSSフィードから非表示になります。