たとえば、ワードプレスにログインしている時に、ログインしているユーザー画像の横に「現在ログインしているユーザー名や名前を表示させたい」と思った時に使える方法です。
現在ログインしているユーザー名を取得するには?
[rml_read_more]
現在ワードプレスにログインしているユーザー名を取得する方法を考えます。以前は「get currentuserinfo」を使ったりしていましたが、現在では非推奨になっているようですので、別の方法を試してみます。
関数リファレンス/get currentuserinfo
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_currentuserinfo
この関数は 非推奨となりました。これは新しい関数に置き換えられた、またはサポート外になった、あるいは将来バージョンにて削除されるためです。この関数を用いる全てのコードは、置き換えとなる関数が存在する場合、書き換えられる必要があります。wp-includes/deprecated.phpもご参照ください。これらの関数から適切なものを代わりに用いてください。
ユーザー名やユーザーの メールアドレスなどを取得する
下記のタグを使って、投稿者の情報を表示させることができます。
- the_author()
- get_the_author()
- the_author_link()
- get_the_author_link()
- the_author_meta()
- the_author_posts()
- the_author_posts_link()
- wp_dropdown_users()
- wp_list_authors()
- get_author_posts_url()
例えば、下記のようにして取得できます。
// ユーザー名を取得する
<?php the_author(); ?>
// ユーザーの名字を取得する
<?php the_author_meta('user_lastname'); ?>
// ユーザーの名前を取得する
<?php the_author_meta('user_firstname'); ?>
// ユーザーのメールアドレスを取得する
<?php the_author_meta('user_email'); ?>
// ユーザーのプロフィール情報を取得する
<?php the_author_meta('user_description'); ?>
// ユーザーのプロフィール画像(150px)を取得する
<?php echo get_avatar( get_the_author_id(), 150 ); ?>
以前も書きましたが、アバター画像を表示するときは下記のように記述します。
echo get_avatar( get_current_user_id(), 40 );
これでサイズ40のアバター画像が表示されます。20にしたいときは20を入れます。
ユーザー情報を取得する場合はthe_author?
ユーザー情報を取得できそうなthe_authorを使ってみます。
<?php the_author(); ?>
結果を見てみます。
ログインしているユーザー名ではなく、管理者?投稿者?のニックネーム?が表示されました。なぜ…。
the_authorは著者名( ブログ上の表示名 )になる
[rml_read_more]
the_authorだと、ページを投稿した投稿者の「ブログ上の表示名」部分が表示されるようになっているようです。
これでは、ログインしているユーザーと関係ない名前が表示されてしまいますので…仕切り直します。
get_current_user_id()でユーザーIDを取り出せる?
そういえば、アバターを画像を取り出した時のget_current_user_id()を使って何が取り出せるのか?試してみます。
<?php echo get_current_user_id(); ?>
ユーザーのIDらしきものが取り出せたような感じです。あと一歩な気がします。
get_userdataを使う?
get_userdataを使うことで、ユーザー情報を取り出すことが可能なようです。
渡された ID を持つユーザーに紐づく情報からなる WP_User オブジェクトを返します。プロパティはデータベースの wp_users および wp_usermeta テーブルに対応します
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_userdata
ということは、ユーザーIDとユーザー情報を何かで紐付ければどうにか取得できそうな予感がします。
get_userdata( get_current_user_id() );
と思ってローカル環境で試してみたら、エラーになってしまいました…。一体どう取得すれば…。
アロー演算子
get_userdataでIDを引数に指定するだけではダメで、 アロー演算子でクラスのインスタンスを取ってプロパティを指定して実行してあげる必要がありそうでした。
wp_users
- ID
- user_login
- user_pass
- user_nicename
- user_email
- user_url
- user_registered
- display_name
wp_usermeta
- first_name
- last_name
- nickname
- description
- wp_capabilities (配列)
- admin_color (管理画面のテーマ。デフォルトは fresh。)
- closedpostboxes_page
- primary_blog
- rich_editing
- source_domain
<div><?php echo "3:".get_userdata( get_current_user_id() )->user_login; ?></div>
取得できました!
あとは、この方法を使ってユーザー情報を色々と取り出すことができるようになります。
<div><?php echo "3:".get_userdata( get_current_user_id() )->user_login; ?></div>
<div><?php echo "4:".get_userdata( get_current_user_id() )->last_name;; ?></div>
<div><?php echo "5:".get_userdata( get_current_user_id() )->first_name; ?></div>
ということは、たとえば姓名を表示させるといった方法であれば、連結させてあげればいけそうな感じがします。
<?php echo get_userdata( get_current_user_id() )->last_name.get_userdata( get_current_user_id() )->first_name ?>
取得できました…!
まとめ
ということで、自問自答しながら色々と調べならが進めましたが、ログインしているユーザー名や名前を表示させるだけでもひと工夫が必要でした。まだまだ先は長そうですが、少しずつ成長させていきたいと思います。
ご参考ください😃