WordPressのログイン状態で条件分岐する

ヘッダ画像

WordPressのログイン状態で条件分岐する

WordPressで管理者など、ログインユーザーとそれ以外でIF文による条件分岐を行いたいケースがあるのではないでしょうか。
今回はスタンダードなPHPとちょい変わり種のJavaScriptの2種類で判定する方法を紹介します。

PHPで判定

ログインユーザーの判定には、PHPでWordPress関数is_user_logged_in()を使うのが定石です。

<?php if ( is_user_logged_in() ) : ?>
<p>ログインユーザー</p>
<?php else : ?>
<p>非ログインユーザー</p>
<?php endif; ?>

では、条件分岐してみましょう。

非ログイン時だけアナリティクス計測タグを出力

<?php if ( !is_user_logged_in() ) : ?>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXXX-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-XXXXXXXX-1');
</script>
<?php endif; ?>

こちらは!is_user_logged_in()で条件分岐することでログインユーザーでない場合にアナリティクスタグを出力するというものです。
目的は解析に不要なログインユーザーのアクセスを計測しないことです。

WordPressでアナリティクスから自分のアクセスを除外する!固定IPじゃなくてもOK
WordPressでアナリティクスから自分のアクセスを除外する!固定IPじゃなくてもOK

自分でサイトをチェックしたり、ひとつの記事を書きあげるために何度もプレビューする方は多いはずです。 プレビューはパラメータが付きますので除外可能なのですが、デフォルトではビューとして都度カウントされます。 正確な解析を行うためには自分のアクセスは集計から除外し […]

非ログインユーザーのアクセスを所定のページへリダイレクト

<?php if ( !is_user_logged_in() && is_single(842) ) : ?>
<script>
setTimeout("link()", 0);
function link(){
location.href='https://example.com/page2';
}
</script>
<?php endif; ?>

この例では、JavaScriptでpage1(ページID=842)への非ログインユーザーのアクセスをexample.com/page2に転送しています。
テーマのヘッダテンプレートなどに記述する形になると思いますが、頻繁に使う必要があれば、ショートコードにした方がよいでしょうね。

JavaScriptで判定

つぎは判定自体をJavaScriptで行ってみましょう。

<script>
if (document.getElementById('admin-bar-css')) {
document.write("ログインユーザー");
} else {
document.write("非ログインユーザー");
}
</script>

これはログイン時にはadminバーが表示されることを利用して判別しています。
当然、アクティブテーマで管理者のログイン時にはツールバーが表示されること、そして、ユーザーの個人設定で「サイトを見るときにツールバーを表示する」にチェックが入っている必要があります。

PHPの場合は基本的にテーマファイルに記述する必要があります。
JavaScriptを使うメリットはテーマファイルに記述する必要がないこと。
カスタムフィールドにスクリプトを追加できるテーマも多いですし、投稿自体に含めることもできます。
上記を記事に挿入すれば、判定結果が表示されます。

先のように転送させるのであれば、非ログインの条件分岐となるelse部分に転送スクリプトを追加します。

<script>
if (document.getElementById('admin-bar-css')) {
} else {
setTimeout("link()", 0);
function link(){
location.href='https://example.com/page2';
}
}
</script>

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です



関連記事

WordPressのユーザー名は丸見え!? 知っていますか?WordPressのログインユーザー名はだだ漏れだという事実を...ダッシュボード乗っ取り防止のためのセ...

絶対に分かる!WordPressの子テーマ作成 WordPressでは子テーマという機能があります。既存のテーマを作成すれば、カスタマイズする際に変更したい部分だけを子...

WordPressのRSSフィードを完全にコントロールする WordPressではコンテンツの更新情報を知らせるために標準でRSSを出力します。その出力方法は...http://e...

「トップに戻る」ボタンでスマホでのユーザビリティアップ! ウェブサイト上でコンテンツを下にスクロールさせると「トップに戻る」ボタンが出現して、クリックするとビューンとページの初め...