【WP】author.phpを使用したページでユーザー名が表示されない?

wordpress-author-info-displayワードプレスでは、テーマに[author.php]を用いると、ユーザーアカウント事の記事の一覧ページを作成することができます。[author.php]は、アーカイブページの分類に入りますので、[author.php]が無い場合は[archive.php]が反映されます。

ユーザー名を表示するときは、テンプレートタグの[the_author()]や[get_the_author()]を用いて取得・表示することができますが、[author.php]で使用すると、ユーザー名が表示されないということがありませんか?

[the_author()]や[get_the_author()]はループ内でのみ使用できるため、[author.php]のループ外に記述した場合は、ユーザー名が表示されません。

[author.php]

the_author(); /* ループ外では何も表示されません */

while ( have_posts() ) :

  the_post();
  the_author(); /* ループ内では各記事の作成者としてユーザ名が表示されます */

endwhile;

[author.php]のループ外でユーザー名を表示したい場合は、テンプレートタグの[the_author_meta()]を使用することで取得・表示することができます。

[the_author_meta(‘フィールド名’,ユーザーID)]というように、フィールド名とユーザーIDを指定することで特定のユーザー情報を参照することが可能になります。

[author.php]では、[$author]にユーザーIDが格納されているので、以下のようにしてユーザー情報を取得することができます。

[author.php]

/* ユーザーの表示名を表示 */
the_author_meta( 'display_name', $author);

表示をせずに、変数に取得した情報を格納する場合は、、テンプレートタグの[get_the_author_meta()]を使用します。

[author.php]

/* ユーザーの表示名を取得 */
$user_name   = get_the_author_meta( 'display_name', $author );