ログイン状態かどうかを判別する@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; ?>
ログイン状態、非ログイン状態でこういう感じになります。(左側サイドバーは無視してください、右側だけ)