メイン WordPress関連 機能 条件分岐のコード
メイン WordPress関連 機能 ログイン/ログアウト
メイン 名称(アルファベット) L LOGIN/OUT
本番環境を直接カスタマイズすることに・・・
自身の運営するサイトでのお話です。
サイトでカスタマイズしたい部分が見つかりました。
テスト環境でカスタマイズしてから本番環境にカスタマイズを反映させようとしたのですが、すぐに使えるテスト環境がありません。
本番環境で直接カスタマイズすることにしたのですが、レイアウトが一時的に崩れることもあるでしょうし、カスタマイズ中のエリアを訪問者の方には見ていただきたくありません。
そこで考えたので、管理画面にログインしているユーザー(つまり私)かどうかを判断して、ログインしているユーザーのみにコンテンツを表示させる条件分岐ができないかということです。
WordPressでは、色々な条件分岐ができます。
これまで考えもしなかった条件分岐ですが、Wordpressならできそうな気がします。
早速調べてみたのですが、やはり【ログインユーザーかどうか】で条件分岐が可能でした。
今回は、この条件分岐のやり方をまとめてみましたので参考にしてください。。
ログインユーザーのみにコンテンツを表示させる条件分岐
ログインユーザーかどうかは、【is_user_logged_in() 】という関数で判断することができます。
この関数を使て、サイトを観覧しているのがログインユーザーなら【表示】、ログインユーザーでなければ【非表示】と条件分岐する事が可能です。
上記の条件分岐を行うためのコードは以下の通りです。
<?php if( is_user_logged_in() ) : ?>
ここに記述した内容はログインユーザーのみに表示されます。
<?php endif; ?>
上記のコードを記述し、その中でカスタマイズを行えば、ログインユーザーはサイト上でそのコンテンツを確認することができますが、ログインユーザーでない一般の訪問者の方は、そのコンテンツを確認することができません。
上記のコードを記述した後、ログインした状態とログインしていない状態でサイトを確認してください。
ログインしている状態ではコンテンツが表示され、ログインしていない状態ではコンテンツが表示されていないことが確認できます。
これなら本番環境でじっくりとカスタマイズを行うことができます。
このコードはPHPコードですので、投稿や固定ページのエディタ内では動作しません。
投稿などのエディタ内で使用したい場合は、後述するショートコードを使用してください。
ログインユーザーかどうかで表示する内容を切り分けたい場合
例えば、ログインユーザーにはコンテンツA、一般訪問者にはコンテンツBを表示させたいなど、ログインユーザーかどうかでコンテンツを切り替えることも、今回ご紹介したコードで可能です。
具体的には、以下のようにコードを記述します。
<?php if( is_user_logged_in() ) : ?>
ここに記述した内容は、ログインユーザーにのみ表示されます。
<?php else : ?>
ここに記述した内容は、ログインユーザー以外に表示されます。
<?php endif; ?>
こうしておけば、ログインユーザーかどうかを判断してコンテンツを切り替えることができます。
こちらのコードも投稿や固定ページ内のエディタでは使用できません。
投稿などのエディタ内で使用したい場合は、後述するショートコードを使用してください。
ログインユーザーを判別する条件分岐を投稿や固定ページで使用するショートコード
これまでにご紹介したコードは、全てPHPコードです。
WordPressは、投稿や固定ページ内にPHPコードを記述することはできません。
しかし、投稿や固定ページの中でもログインユーザーのみにコンテンツを表示させたい場合があるかと思います。そんな時は、ショートコードを使いましょう。
ショートコードを使えば、PHPコードを記述できない投稿や固定ページでも、ログインユーザーかどうかを判断して、ログインユーザーのみにコンテンツを表示させることができます。
まずは、ログインユーザーのみにコンテンツを表示させる条件分岐をショートコード化します。
以下のコードをfunctions.phpに記述してください。
function if_login( $atts, $content = null ) {
if(is_user_logged_in()) {
return '' . $content . '';
} else {
return '';
}
}
add_shortcode('if-login', 'if_login');
これでショートコードの作成は完了です。
ログインユーザーのみにコンテンツを表示させたい場合、以下の様にショートコードを使います。
【if-login】ここに記述した内容は、ログインユーザーにのみ表示されます。【/if-login】
ログインユーザーのみに表示させたい内容を、で囲ってやりましょう。
上記は【】で囲っていますが、実際には[]で囲ってください。
このショートコードは、投稿、固定ページ、カスタム投稿で使用することができます。
ショートコードに関して詳しく知りたい場合は、をご覧ください。
まとめ
WordPressでログインしているユーザーのみにコンテンツ表示させる条件分岐をご紹介しました。
ちょっとしたカスタマイズなどで、テスト環境を使うまでもないけど、本番環境でカスタマイズしている段階を訪問者には見せたくない時など、今回の条件分岐が役に立ちそうです。
会員制サイトなどで、会員と非会員でコンテンツを分けたい時にも活用できそうです。