ショウジンブログ on Hatena

“お芝居をしないと、この社会では異邦人として扱われるほかない”

ログイン状態かどうかを判別する@WordPress

WordPressサイトで登録ユーザーがログインしているか否かを判別して表示を出し分ける例です。

ちょっとした限定コンテンツ、例えば登録ユーザーだけに内容を公開したいような場合には、プラグインを使うこともなく、これでも十分に対応できます。(サイトの規模、扱うコンテンツの内容等にもよりますが)

ようするに

・ログインしているか(そのWordPressサイトにユーザーとして登録されていて) ・ログインしていないか(登録ユーザーであるかは別にして)

です。

<?php if(is_user_logged_in()): /* ログイン状態 */ ?>
ログイン状態のユーザーに見せる内容
<?php else : /* それ以外(非ログイン)*/ ?>
それ以外(非ログイン)状態の訪問者に見せる内容
<?php endif; ?>

これを使えば、非ログイン状態での閲覧では「ログインしてね、会員登録が必要ですよ、申し込みはこちらからね」というようなものを用意しておけば、簡単な会員向けサイト(非会員にはチラ見せとか)が作れます。

もうちょっと実際的なコードの例だとこんなふうに。(ログイン状態で見せるものは単純に基本的な投稿を表示するループです)

<?php if(is_user_logged_in()): /* ログイン状態 */ ?>
    <div class="logged_in">
        <?php
        $args = array(
            'posts_per_page' => 6,
            'order'=> 'DESC', // ソート(降順:新しいものから古いものへ)
            'category' => 1, // カテゴリーの指定(カテゴリIDを指定、除外の場合にはカテゴリIDに「-」をつける、複数の場合にはカンマでつなげる
        );
        $myposts = get_posts( $args );
        foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
            <div class="post">
                <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
                <ul class="optional">
                    <li class="date">Published: <?php echo get_post_time('M jS, Y'); ?></li>
                    <li class="category">Category: <?php the_category(', '); ?></li>
                    <?php if(has_tag() == true) : ?>
                        <li class="tags">Tags: <?php the_tags('', ', ', ''); ?></li>
                    <?php else : ?>
                    <?php endif; ?>
                </ul>
            <!-- / .post --></div>
        <?php endforeach; 
        wp_reset_postdata();?>
    </div>
<?php else : /* それ以外(非ログイン)*/ ?>
    <div class="logged_in">
        <p>ログインしてください。</p>
        <p>この内容を見るには会員登録が必要です。<br><a href="">会員登録はこちら</a></p>
    </div>
<?php endif; ?>

ログイン状態、非ログイン状態でこういう感じになります。(左側サイドバーは無視してください、右側だけ)

f:id:showjinx:20160613154617p:plain