ブログ

会員制サイトを作る~ログイン時のみ動作させたり動作させなかったりする方法

pg

前回のコラムでは、プレビューモードで表示している場合のみ表示させたり、逆にプレビューモード以外の場合だけ表示対象にしたりと、プレビューというキーワードで動作を切り分ける方法をご紹介しました。

同様の考え方で管理画面にログインしているかどうかという基準で動作を変更する方法をご紹介します。

ログインしているかどうかで動作を変更できるということは、たとえば以下のような動作が可能です。

  • ログインしている場合のみコメント欄を表示する
  • ログイン中のときだけメッセージを表示する
  • Google Analytics などのアクセス解析用トラッキングコードをログイン中のみ表示しない

標準テーマでも使われているのがコメント欄の箇所で、ログイン中のみコメント欄を表示したり、コメント欄の項目を変更したりする場合に使いますし、さらに応用としてログインしている人向けにメッセージを表示するといったことも可能です。「○○さん、お疲れさまです。」「○○さん、こんにちは。」のような表示をさせることも可能になります。

また、プレビュー時の動作変更の際と同様に、アクセス解析のトラッキングコードの制御をすることで、管理ログイン中はアクセスに計上させないという高度な制御をも可能にします。

ログイン中かどうかを示す関数

ログイン中(ログイン状態)であるかどうかを示す WordPress の内部関数はこちらです。

is_user_logged_in()

 

この関数は、戻り値として論理値(true か false)を返し、ログイン中であれば true を、通常表示であれば false を返します。

従ってこの関数を条件分岐の if 文の条件式に用いれば処理をログインの状態に応じて変更することが可能です。

使用例

具体的な使い方は、ログイン時のみ動作させる場合は以下のようなif構文で該当する処理を挟みます。

if (is_user_logged_in()) :
    処理
endif;

または

if (is_user_logged_in() !== false) :
    処理
endif;

 

logged-in-1

 

逆に、ログイン時のみ動作させたくない場合は以下のようなif構文で該当する処理を挟む形とします。

if (! is_user_logged_in()) :
    処理
endif;

または

if (is_user_logged_in() === false) :
    処理
endif;

 

なお、今回は条件式で「===」や「!==」を用いました。
これらの等号や不等号は、データ型まで含めた完全一致を行うための演算子ですが、役割と使い分けについては別のコラムにてご紹介しています。

特定のプラグインの更新だけを止める方法

 

管理画面を表示している場合のみ動作を変更する

上記でご紹介した方法は、あくまでログインしているかどうかという情報を得るために使うものです。
管理画面を表示している場合に限り表示内容を制御するには、以下の WordPress 専用関数を活用します。

is_admin()

管理画面を表示しているかどうかというだけの使い方は、主にプラグインなどの開発で用いられますので通常はテーマを調整する段階では使用することは少ないでしょう。

 

まとめ

ログイン情報の活用は、ログイン中の他の管理メンバーへ情報を伝えたりメッセージを送ったりするほか、特定のページのみ会員向けにパスワードを求めるなど会員制ウェブサイトの構築にも一役買うことができます。ログイン情報はCMS(コンテンツ管理システム)の基本となる重要な情報のひとつであるため、プログラム上から柔軟に取り出せるよう内部で専用の関数が用意されています。

これらの関数はセキュリティにも関係することがあるため内部処理を理解した上で使用する必要がありますが、希望通りのウェブサイトを無駄なく効率のよい構築ができることを期待しています。

また、状況に応じた切り分けなど特殊な運用を行いたい場合や、作ってみたけどセキュリティが気になるなど、全般的な構築の支援から部分的なアドバイスまでPLUGMIZE(プラグマイズ)ではみなさまのウェブサイト構築の後方支援をさせていただいております。躓いた際にはお気軽にご相談ください。

 

参考
関数リファレンス/is user logged in – WordPress Codex 日本語版
関数リファレンス/is admin – WordPress Codex 日本語版

関連記事

WP-Ranking PRO

記事ランキング

ページ上部へ戻る