Wordpress
バックエンド
ログインの有無で処理を分けたいとき
未ログインユーザーには見せたくないが、ログイン中には表示していたい、などの条件付けには is_user_logged_in() を使います。
<?php
// ログイン中のみ「ページの編集」を出す
if ( ! is_user_logged_in() ):
else:
?>
<a href="<?php echo get_edit_post_link(); ?>">ページの編集</a>
<?php endif; ?>
get_header() の前に置いて「ログインしてなかったらログインページに飛ばす」ということもできます。
テンプレートファイルに個別指定する方法
<?php
if ( ! is_user_logged_in() ):
$login_redirect = "/wp-admin/wp-login.php/";
wp_redirect($login_redirect);
exit;
else:
?>
[ ログイン後に閲覧可能な内容 ]
<?php endif; ?>
functions.phpでサイト全体に適用する方法
<?php
// wp-login redirect
function require_login() {
if ( ! is_user_logged_in() && ! preg_match( '/^(wp-login\.php|async-upload\.php)/',
basename( $_SERVER['REQUEST_URI'] ) )
&& ! ( defined( 'DOING_AJAX' )
&& DOING_AJAX )
&& ! ( defined( 'DOING_CRON' )
&& DOING_CRON ) ) {
auth_redirect();
}
}
add_action( 'init', 'require_login' );
?>