WordPress ログイン判定をしてログイン時のみに表示する

WordPress ログイン判定をしてログイン時のみに表示する

WordPressにログインしているユーザーのみが閲覧可能なコンテンツを表示させたい場合には、ログインしてるユーザーかどうかをチェックできるWordPress関数をPHPのif文の条件に使用して、関数のログイン判定がtrueの場合にログイン時のみ表示する処理が出力されるようにします。

ログイン判定の結果で条件分岐をすればWordPressにログインしてるユーザーへの表示と、WordPressにログインしていないユーザーに表示する内容に分けた処理にすることもできます。

 

ログイン判定にis_user_logged_inを使用

 

WordPressでのログイン判定。つまりWordPressにログインしているユーザーかどうかをチェックするには、WordPressの関数「is_user_logged_in()」を使用します。

 

is_user_logged_in()

 

WordPressのis_user_logged_in関数は、WordPressにログインしている場合はtrueが、ログインしていない場合はfalseを戻り値で返します。

そのためtrueとfalseの戻り値をPHPのif文の条件に利用すると、ログインしている場合とログインしてない場合の条件分岐処理でWordPressに表示する内容を分けられます。

WordPressのログイン判定に使用するis_user_logged_inの「true」と「false」の戻り値がイメージしづらい場合はvar_dumpします。

 

<pre style="padding: 20px;">
    <?php
        $user_login_check = is_user_logged_in();
        var_dump($user_login_check);
    ?>
</pre>

 

テーマのindex.phpあたりにでも変数に入れたis_user_logged_in()をvar_dumpしてWordPressにログインした状態とログインしていない状態でvar_dumpの表示結果を確認します。

 

  • WordPressにログインしてるときはtrue
  • WordPressにログインしてないときはfalse

 

それぞれ結果を目で見ることができるのでWordPressのログイン判定にis_user_logged_inを使用する仕組みが理解しやすいです。

 

Advertisement

 

ログイン時のみ表示する条件をif文で記述

 

WordPressでログイン判定に使用するis_user_logged_in()は、PHPのif文の条件に記述してWordPressのログイン時のみに表示する内容を表示できるようにします。

 

<?php if( is_user_logged_in() ) : ?>
    WordPressにログイン時のみ表示される処理を書く
<?php endif; ?>

 

例えばWordPressのログイン時のみに表示したい場所がヘッダーなら、header.phpにPHPのif文を記述してifの条件式(カッコ内)にWordPressの関数is_user_logged_in()を記述します。if文の終わりはendifで閉じます。

if( is_user_logged_in() )からendifまでの間には、WordPressにログイン時のみ表示する処理を記述します。

そうするとWordPressのログイン時のみに表示するコンテンツとしてif( is_user_logged_in() )からendifまでの間に記述した内容をヘッダーに表示することができます。

 

ログイン判定してログイン時のみに表示したかったこと

 

WordPressでログイン判定をしてログイン時のみに表示するときには、「こんなことができますよ」のような使用例みたいなものを私がログイン時のみ表示したかったことで紹介します。

ログイン時のみ表示したかったことは「WordPressにログインしている場合にだけ下書き記事の一覧を表示する」です。

下書きする記事まで進む手順で「ダッシュボードを開く」⇒「 投稿一覧を開く」⇒「 下書きを開く」という流れに疲れたのでヘッダーにでも表示させておこう。ローカル環境のWordPressなので必要ないけどログイン時のみ表示するようにしよう。そのために書いたコードが以下です。

 

<?php
    if ( is_user_logged_in() ) {
        get_template_part('login', 'user');
    } else {
        echo '<div class="search_inner"><p>ログインしてない場合の表示が入る。</p></div>';
    }
?>

 

Advertisement

 

WordPressのis_user_logged_in関数でログイン判定をする条件にしたif文で、WordPressにログインしてる場合とログインしてない場合の条件分岐の処理です。

WordPressにログインしている場合はis_user_logged_in()がtrueの判定をするので、get_template_partでlogin-user.phpが呼び出されて、login-user.phpに書いたループ処理で下書き一覧が表示します。

WordPressにログインしてない場合はis_user_logged_in()がfalseを返すのでelse文でechoした内容が表示します。

login-user.phpはテーマフォルダに配置してWP_Queryのループで下書き全件を取得し、タイトルをリンクして別タブで開くようにしています。

 

<!--ログイン時のみ表示する下書き一覧のループ-->
<?php
    $args = array(
        'post_status' => 'draft',
        'posts_per_page' => -1,
    );
    $my_query = new WP_Query( $args );
    if ( $my_query->have_posts() ):
?>

<ul class="draft_list">
    <?php while( $my_query->have_posts()): $my_query->the_post(); ?>
    <li><a href="<?php the_permalink(); ?>" target="_blank"><?php the_title(); ?></a></li>
    <?php endwhile; endif; ?>
</ul>
<?php wp_reset_postdata(); ?>

 

このように記述したWordPressでの表示結果は、WordPressにログインしているときにはWordPressがログイン判定をしてログイン時のみだけ下書き記事の一覧が表示します。

 

 

上の画像の下部を見ると「bool(true)」の表示もありますが、これはログイン判定に使用したWordPressの関数is_user_logged_inをvar_dumpして、WordPressにログインした場合とログインしてない場合のチェックができているか、ログイン判定の確認をしています。

 

 

WordPressにログインしてる場合はtrueと共に下書き記事の一覧が表示しましたが、WordPressをログアウトしてログインしてない状態でページを見ると、falseなためログインしてない判定になります。

そのためログイン時に表示する下書き記事の一覧はif文の条件に一致せずに出力されなくなり、代わりにelse文で記述した処理がWordPressにログインしてない場合に表示します。

実装するときはテスト環境でまずは試されるかと思います。そのときにWordPressでログイン判定をしてログイン時のみに表示する今回の投稿内容が部分的にでも誰かの参考になればと思います。

WordPress使い方カテゴリの最新記事