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

パスワード保護された投稿は非公開にするためのものですが、WordPressではブログリスト、アーカイブ、検索結果にタイトルが表示されてしまいます。誰かがクリックしてパスワード画面に遭遇すると、混乱を招く可能性があります。

特にコンテンツがクライアント、メンバー、または内部使用のみを目的としている場合、これは最良の印象を残しません。😓

良いニュースは、これらの投稿をWordPressループ(ホームページ、アーカイブ、検索結果に表示される投稿リスト)から完全に非表示にできることです。当社のテストでは、WPCodeがこれを実現する最も簡単で信頼性の高い方法であることがわかりました。

このガイドでは、プライベートコンテンツを真にプライベートに保つための簡単な方法をいくつかご紹介します。さまざまな方法をテストしましたので、サイトを壊したり、実際に必要としている人へのアクセスをブロックしたりすることなく、パスワード保護された投稿を削除できます。

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

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

WordPressでは、コンテンツ自体がロックされているにもかかわらず、サイト全体に「保護済み」というラベル付きでパスワード保護された投稿が表示されます。特定のコンテンツを完全にプライベートにしたい場合は、これは問題です。

パスワードを持っていない人でもタイトルを見ることができ、意図した以上の情報を明らかにする可能性があります。また、コンテンツを期待して投稿をクリックしたのにパスワード入力を求められた訪問者を混乱させる可能性もあります。

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

さらに、これらの投稿は望まない注目を集める可能性があります。タイトルが表示されるため、誰かがさまざまなパスワードを試してアクセスしようとする可能性があります。特にコンテンツが価値がある、または機密性が高いように見える場合です。

そのため、多くのサイト所有者は、パスワード保護された投稿をWordPressループから完全に非表示にすることを選択します。これを実行すると、プライベート投稿は、すでにアクセス権を持っている人がいない限り、フロントエンドのどこにも表示されなくなります。

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

早速始めましょう!

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

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

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

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

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

WPCodeのホームページ

🧑‍💻 専門家のアドバイス: このチュートリアルは、WPCode の無料版で完璧に動作します。複数のカスタムコードスニペットを定期的に追加または管理している場合は、WPCode Pro にアップグレードすると、コードのスケジュール設定、完全な改訂履歴など、便利な追加機能を利用できます。

まず、WPCode プラグインをインストールして有効化してください。

WordPress のダッシュボードから、プラグイン » 新規追加 に移動します。

WordPress管理エリアのプラグインの下にある新規プラグイン追加サブメニュー

次の画面で、検索バーを使用して WPCode を検索できます。

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

WPCodeのインストール

WordPress が初めての場合は、WordPress プラグインのインストール方法に関するガイドをご覧ください。

ステップ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' );

このコードは、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のビデオチュートリアルについては、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フィードからも非表示になりますか?

返信する

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