ワードプレスにログイン中かどうかをPHPプログラムでCOOKIEから判定する方法を解説いたします。
ワードプレスにログインされているかをPHPプログラムで判定する
ワードプレスには組み込み関数でユーザーのログイン状態を判定する処理が存在します。
if ( is_user_logged_in() ) { // ユーザーがログイン中です }
しかしこの処理は、ワードプレスが初期化され、ユーザー関連の処理がバックグラウンドで終わった後にしか使えません。
参考
ワードプレスでユーザーのID等を取得できる最短のフック
ワードプレスの初期化前にユーザーのログイン状態を簡易的に調べるには、ログインユーザーに特有のCOOKIEを見る方法があります。
ワードプレスにログイン中かどうかをPHPプログラムでCOOKIEから判定する
ワードプレスはユーザーがログインしている場合、COOKIEに wordpress_logged_in_ [hash] という値を保持します。
参考
https://ja.wordpress.org/support/article/cookies/
この為PHPプログラムでwordpress_logged_in_ という文字列のCOOKIEが存在する場合、ログイン中であると判定してプログラムを場合分けすることが可能です。
foreach ($_COOKIE as $key => $value){ if (false !== strpos($key, 'wordpress_logged_in_')) { // ユーザーがログイン中です } }
上記コードは、すべてのユーザーのCOOKIEをforeachで調べて、wordpress_logged_in_の付くCOOKIE値がある場合、ログインしていると簡易的に判定します。
※ご注意
この方法は、正規のログインが成功しているかどうかは判定しません。この為、この処理で閲覧可能にするコンテンツ、キャッシュ処理などはハッカーや不正なCOOKIEの偽造などでログインを偽装されてしまっても支障のない範囲での実装にとどめられることをお勧めいたします。
WordPress ワードプレスのコーディング、テーマやプラグインおカスタマイズのご相談・ご依頼はお気軽にWPドクターまでお送りください