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

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

会員サイトやユーザーごとの情報表示が必要なサイトを運営している場合、ログイン中のユーザー情報をフロントエンド(投稿・固定ページ・テンプレート)で表示したいことがあります。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()を使うことで、フロントエンドでも簡単に現在のログインユーザー情報を取得できます。条件分岐やショートコードと組み合わせることで、会員専用コンテンツやダッシュボード的な要素を柔軟に構築できます。

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