【WordPress】フロントエンドで現在ログイン中のユーザー情報を取得・表示する方法

【WordPress】フロントエンドで現在ログイン中のユーザー情報を取得・表示する方法 WordPress

会員サイトやユーザーごとの情報表示が必要なサイトを運営している場合、ログイン中のユーザー情報をフロントエンド(投稿・固定ページ・テンプレート)で表示したいことがあります。WordPressではwp_get_current_user()関数を使うことで、簡単にログインユーザーの情報を取得できます。

本記事では、ログイン中のユーザー情報を取得し、テンプレート内で安全に表示する方法を解説します。

ページキャッシュ環境では他人の情報が配信される危険がある
この記事で紹介するコードは、表示するたびにログイン中のユーザー固有の情報(メールアドレス・表示名など)を出力します。フルページキャッシュ系プラグイン(WP Rocket・Cloudflareキャッシュ等)を導入しているサイトで、除外設定なしにこの種のパーソナライズされた内容を出力すると、キャッシュされたページが別のユーザーやゲストにそのまま配信され、他人のユーザー情報が漏洩するという実運用で頻発する重大な落とし穴があります。キャッシュ環境での具体的な対策はログインユーザーのみコンテンツを表示する方法|ページキャッシュ環境での注意点で詳しく解説しています。
スポンサーリンク

ログイン中のユーザー情報を取得する

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; ?>

この条件分岐により、ログイン状況に応じてコンテンツを切り替えることができます。

ショートコードとして出力する方法

投稿本文などでログインユーザー名を表示したい場合は、ショートコードを使うと便利です。

functions.php:ログインユーザー名を表示するショートコード
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などのプラグインで設定したユーザーメタも同様に取得できます。

よくある質問(FAQ)

Qフロントエンドのテンプレートで現在のユーザー情報を取得するには?
Awp_get_current_user()でWP_Userオブジェクトを取得します。ID・user_login・user_email・display_name等のプロパティを使用します。ゲストの場合はIDが0になります。
Qユーザーのプロフィール画像(アバター)を表示するには?
Aget_avatar($user->ID, 96)でアバター画像タグを取得できます。セルフホスト環境ではGravatar(gravatar.com)のアバターが使用されます。BuddyPressなど追加プラグインでローカルアバターに対応できます。
Qログインユーザーの投稿数やコメント数を表示するには?
Acount_user_posts($user_id)で投稿数、get_comments(array(‘user_id’ => $user_id, ‘count’ => true))でコメント数を取得できます。

まとめ

WordPressでは、wp_get_current_user()を使うことで、フロントエンドでも簡単に現在のログインユーザー情報を取得できます。条件分岐やショートコードと組み合わせることで、会員専用コンテンツやダッシュボード的な要素を柔軟に構築できます。ページキャッシュを導入している場合は、他人の情報が配信されないよう除外設定を忘れずに行いましょう。

ユーザー体験を向上させるためにも、ログイン情報の動的表示を活用してみましょう。