WordPressでは簡単にページ単位でパスワード保護設定をすることが可能です。
これにより、パスワードを知らない人しかそのページのコンテンツを閲覧できないよう制限することができます。
しかし、この「パスワード保護機能」で実際にパスワード保護されるのは、the_content()で出力される部分、つまり「本文」の内容だけです。
実案件では、「本文」以外の部分をパスワード保護したいことも多々あります。
この記事ではWordPressのパスワード保護機能を使用して任意のコンテンツを保護する方法についてご紹介します。
パスワード保護機能の基本的な使用方法
前提として、WordPressの保護機能の基本的な使用方法をご説明します。
投稿・固定ページ編集画面の右側メニューにある「表示状態」部分をクリックします。
次に「パスワード保護」を選択します。
最後に、表示された入力フォームに任意のパスワードを設定します。
WordPressではたったこれだけで任意のページに保護設定をすることが可能です。
パスワード保護されたページの様子
パスワード保護されたページで任意のコンテンツを保護する方法
上記の方法で、任意のページにパスワード保護設定をすることができました。
しかし前述したように、これだけではパスワード保護されるのはthe_content()で出力される「本文」の部分だけです。
例えば、テンプレートファイルを編集してカスタムフィールドを出力している場合、その出力部分はパスワード保護されず、そのままページ上に表示されてしまいます。
もしカスタムフィールドなどthe_content()以外のコンテンツ部分をパスワード保護したい場合、そのページのテンプレートファイル内で以下のように記述します。
<?php
if( !post_password_required() ) {
/*
*パスワード保護したい内容をここに記述
*※パスワード保護が解除されているとき(パスワードが入力されたあと)はif文内の処理が実行されます。
*/
}
?>
このように書くことで
- パスワード保護中=パスワード未入力状態ならif文内のコンテンツは出力されない
- パスワード保護解除=パスワード入力済みならif文内のコンテンツが出力される
という形で制御できます。
パスワード保護されているページは
パスワード入力前だと「保護されている」という扱いになり、
パスワード入力後だと「保護されていない」という扱いになる。
まとめ
以上がWordPressでパスワード保護機能を使用して任意のコンテンツを保護する方法でした。
WordPressのパスワード保護機能は簡単に使用できて便利ですが、カスタムフィールドのように「本文」とは別で出力が必要なコンテンツに対しては別途対応が必要です。
今回ご紹介したコードを利用すれば簡単に任意のコンテンツを保護できるので、ぜひご活用ください。
それでは、最後までご覧いただきありがとうございました。
コメント