会員サイトやユーザーごとの情報表示が必要なサイトを運営している場合、ログイン中のユーザー情報をフロントエンド(投稿・固定ページ・テンプレート)で表示したいことがあります。WordPressではwp_get_current_user()
関数を使うことで、簡単にログインユーザーの情報を取得できます。
本記事では、ログイン中のユーザー情報を取得し、テンプレート内で安全に表示する方法を解説します。
ログイン中のユーザー情報を取得する
WordPressでは、以下のようにwp_get_current_user()
関数を使用することで、ユーザー情報オブジェクトを取得できます。
<?php
$current_user = wp_get_current_user();
?>
この関数は、ログインしていない場合でも呼び出し可能ですが、未ログイン時は空のユーザーオブジェクトが返ります。必要に応じてログイン判定を行うと安全です。
ユーザー情報の各プロパティを表示する
$current_user
から取得できる主なプロパティは以下の通りです。
<p>ユーザー名:<?php echo esc_html($current_user->user_login); ?></p>
<p>表示名:<?php echo esc_html($current_user->display_name); ?></p>
<p>メールアドレス:<?php echo esc_html($current_user->user_email); ?></p>
<p>ユーザーID:<?php echo (int) $current_user->ID; ?></p>
セキュリティを意識して、esc_html()
や intval()
などで適切に出力をサニタイズしましょう。
ログイン中のみ表示する条件分岐
未ログインユーザーには情報を表示したくない場合、is_user_logged_in()
関数を併用します。
<?php if ( is_user_logged_in() ) : ?>
<p>こんにちは、<?php echo esc_html($current_user->display_name); ?> さん!</p>
<?php else : ?>
<p>ログインしてください。</p>
<?php endif; ?>
この条件分岐により、ログイン状況に応じてコンテンツを切り替えることができます。
ショートコードとして出力する方法
投稿本文などでログインユーザー名を表示したい場合は、ショートコードを使うと便利です。
function show_current_user_name() {
if ( is_user_logged_in() ) {
$user = wp_get_current_user();
return 'ようこそ、' . esc_html($user->display_name) . ' さん';
} else {
return 'ログインしていません。';
}
}
add_shortcode('current_user_name', 'show_current_user_name');
このショートコードを投稿本文に [current_user_name]
と記述すれば、自動で名前が出力されます。
応用:カスタムフィールドの値を表示する
ユーザーに紐づいたカスタムフィールド(例:電話番号や会社名)を表示したい場合、get_user_meta()
を使います。
<?php
$company = get_user_meta($current_user->ID, 'company_name', true);
echo esc_html($company);
?>
ACFなどのプラグインで設定したユーザーメタも同様に取得できます。
まとめ
WordPressでは、wp_get_current_user()
を使うことで、フロントエンドでも簡単に現在のログインユーザー情報を取得できます。条件分岐やショートコードと組み合わせることで、会員専用コンテンツやダッシュボード的な要素を柔軟に構築できます。
ユーザー体験を向上させるためにも、ログイン情報の動的表示を活用してみましょう。