WordPressループからパスワード保護された投稿を非表示にする方法

WordPressのパスワード保護が、思っているほどプライベートではないことを知り、驚いた読者から何人か意見を聞きました。

もちろん、コンテンツはパスワードでロックされています。しかし、投稿タイトルはホームページ、カテゴリページ、検索結果に表示されたままです。

日記に鍵をかけるようなものですが、章の名前はそのまま外に出しておくようなものです。😱

これは、会員制サイトを運営している場合や、機密性の高いビジネス情報を共有している場合には問題となります。見た目が悪くなるだけでなく、舞台裏で何が隠されているかを示唆してしまいます。好奇心旺盛な訪問者は、そこにコンテンツがあることを知っているだけで、アクセスしようとすることさえあります。

幸いなことに、これらの投稿を一般の目から完全に隠す方法があります。

このガイドでは、プライベートなコンテンツを真にプライベートに保つための最良の方法を紹介します。WordPressのループからパスワード保護された投稿を削除するためのいくつかの方法をテストしました。サイトを壊したり、アクセスが必要なユーザーを締め出したりすることなく。🙌

WordPressループからパスワード保護された投稿を非表示にする方法

WordPressでパスワード保護された投稿を非表示にする理由

デフォルトでは、WordPressはパスワードで保護された投稿を、そのタイトルと「保護済み」という接頭辞とともに表示します。ユーザーは投稿の内容を表示するためにパスワードを入力する必要があります。

この投稿のプレフィックスは、ホームページ、アーカイブ、最近の投稿ウィジェット、その他の領域に表示されます。

ホームページに表示されるパスワード保護された投稿

一部のコンテンツを完全に非公開にしたい場合は、いくつかの理由から理想的ではありません。

パスワードを持っていないユーザーでも投稿タイトルは表示されるため、それ自体が問題となる可能性があります。また、ブルートフォース攻撃でコンテンツへのアクセスを試みることもできます。ご存知の通り、パスワードは解読される可能性があります。

これを踏まえて、パスワード保護された投稿をWordPressループから非表示にして、他のユーザーに見られないようにする方法を説明します。以下に、実行するすべてのステップの概要を示します。

早速始めましょう!

ステップ 1. コードスニペットプラグインをインストールする

サイトに特定の変更を加えるために、一部のWordPressの専門家は、テーマのfunctions.phpファイルにカスタムコードスニペットを追加するように言うかもしれません。

この方法は初心者向けではなく、ウェブサイトを破損するリスクがあるため、お勧めしません。代わりに、WPCodeのようなコードスニペットプラグインを使用して、この作業を行うことができます。

WPCodeは市場で最高のコードスニペットプラグインです。当社のパートナーブランドの中には、カスタムコードスニペットをウェブサイトに追加および管理するためにこれを使用しており、彼らはそれを気に入っています。

プラグインに関する詳細情報は、WPCodeの完全レビューでご覧いただけます。

WPCodeのホームページ

最も良い点は、WPCodeの無料バージョンを使用して、カスタムコードスニペットをWordPressサイトに追加できることです。

まず、無料のWPCodeプラグインをインストールして有効化してください。プロセスに問題がある場合は、WordPressプラグインのインストール方法に関するガイドをご覧ください。

🧑‍💻 エキスパートのヒント: WPCode のプレミアムバージョンを購入すると、完全な改訂履歴、コードスケジューリング、100以上の専門家承認済みコードスニペットへのアクセスなどの高度な機能がアンロックされます。

ステップ2. WordPressでパスワード保護された投稿を非表示にする

プラグインを有効化したら、WordPress管理画面からコードスニペット » + スニペットを追加に移動してください。

次に、「カスタムコードを追加(新規スニペット)」セクション内の「カスタムスニペットを追加」ボタンをクリックするだけです。

WPCodeにカスタムコードを追加する

次の画面で、カスタムスニペットのコードタイプを選択する必要があります。

このチュートリアルでは、「PHPスニペット」オプションを使用します。

コードタイプとして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' );

このコードは、posts_where フィルターを使用して WordPress に送信されるクエリを変更します。これにより、パスワードがないすべての投稿を取得するように 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 でパスワード保護された投稿を非表示にしたいのはなぜですか?

パスワード保護された投稿を非表示にすることは、サイトをクリーンでプロフェッショナルに見せるのに役立ちます。また、不正な訪問者がプライベートコンテンツの存在を知るのを防ぎ、アクセス試行のリスクを軽減し、サイトをより安全に保ちます。

コードを使わずにパスワード保護された投稿を非表示にできますか?

はい!WordPressは基本的なプライバシー設定を提供していますが、WPCodeのようなプラグインを使用すると、特にコードの編集に慣れていない場合、プロセスがより簡単で信頼性の高いものになります。技術的なスキルがなくても、より多くの制御が可能になります。

これらを非表示にすると、許可されたユーザーの可視性に影響しますか?

全く問題ありません。ログインしているメンバーや特定の役割を持つユーザーなど、権限のあるユーザーは引き続き直接投稿にアクセスできます。パスワードまたは権限が正しい限り。

これを助けることができるのはWPCodeだけですか?

WPCodeは最も簡単で信頼性の高いオプションの1つであり、それが推奨する理由です。とはいえ、他のプラグインも利用可能です。メンテナンスが行き届いており、テーマや他のツールと互換性のあるものを選ぶようにしてください。

パスワード保護された投稿を非表示にすると、サイトのSEOに影響しますか?

これらの投稿をホームページやアーカイブから非表示にしても、SEOに悪影響はありません。実際、公開されているコンテンツを検索エンジンにとってより焦点を絞り、関連性の高いものに保つことで、改善される可能性があります。

この記事が、サイトのWordPressループからパスワード保護された投稿を非表示にするのに役立ったことを願っています。また、WordPressでプライベート投稿と保護済み投稿のプレフィックスを変更する方法のチュートリアルや、WordPressでコンテンツを保護するさまざまな方法のガイドも参照してください。

この記事が気に入ったら、WordPressのビデオチュートリアルについては、YouTubeチャンネルを購読してください。 TwitterFacebookでもフォローできます。

開示:当社のコンテンツは読者によってサポートされています。これは、当社のリンクの一部をクリックすると、当社が手数料を得る可能性があることを意味します。WPBeginnerがどのように資金提供されているか、それがなぜ重要か、そしてどのように私たちをサポートできるかについては、こちらをご覧ください。当社の編集プロセスはこちらです。

究極のWordPressツールキット

無料のツールキットにアクセスしましょう - すべてのプロフェッショナルが持つべきWordPress関連の製品とリソースのコレクションです!

読者とのインタラクション

17 CommentsLeave a Reply

  1. これはメインフィードではうまくいきました。ありがとうございます!数コメント前のマークと同じような問題を抱えていますが、最近の投稿ウィジェットで問題が発生しています。PW保護された投稿が最近の投稿リストに表示され続けます。

      • いいえ、なぜですか?そのスニペットは、最近の投稿ウィジェットからもそれらを非表示にする必要がありますか?

        • パスワードで保護された投稿を最近の投稿ウィジェットから非表示にする必要があります。サイトにキャッシュがある場合は、ウィジェットのキャッシュ情報が表示されている場合に備えて、必ずクリアしてください。もう1つの可能性は、当社のコード以外のものがウィジェットが使用しているクエリを変更していることです。

  2. コードで*実際に*どのように行うかを説明していただきありがとうございます。「wpbeginner.com」という名前のサイトからは予想していませんでした!(ちなみに、2024年とWP 6.5.2でも引き続き機能します。)

    多くのサイトがソリューションを提供しているように見せかけていますが、実際には単純なことを複雑にし、パッチが適用されない脆弱性に対してサイトをさらけ出すプラグインの使用を求めています。

    • 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 :)

      管理者

  3. 皆さん、本当にありがとうございます。大変助かりました。感謝しています。プラグインを使わないこのような投稿をこれからも続けてください。

    • プラグイン不要のソリューションが利用可能になったら、必ず含めるように努めます。

      管理者

  4. サイト固有のプラグインを作成し、これらの手順に従ったところ、サイトの「投稿」ページで投稿を非表示にすることができました。しかし、個々の投稿の「関連記事」ウィジェットでは、投稿は引き続き表示されます。(上記の画像と非常によく似ていますが、パスワード保護された投稿はまだ表示されています。)

    これを修正するために何かできることはありますか?

  5. 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’ );

    いつもながら素晴らしい投稿です。ありがとうございます。

  6. こんにちは皆さん

    以下のコードでサイト固有のプラグインを作成しました。

    次世代ギャラリーを投稿に添付しようとすると、ギャラリーが読み込まれません。プラグインを無効にするとすぐに、次世代ギャラリーは元に戻ります。

    Regards

  7. このスニペットをありがとうございます。とても参考になります!

    これらの投稿を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');

  8. 素晴らしいヒントをありがとうございます!
    しかし、あなたのコードスニペットでループから非表示になっているこれらの投稿は、RSSフィードからも非表示になりますか?

返信する

コメントを残していただきありがとうございます。すべてのコメントは、当社のコメントポリシーに従ってモデレーションされますので、ご了承ください。メールアドレスは公開されません。名前フィールドにキーワードを使用しないでください。個人的で有意義な会話をしましょう。