WordPressで現在ログイン中のユーザーの情報を取得できるwp_get_current_user()
という便利な関数があります。
この関数で得られる情報ってどんな種類があるか気になってしまったので、中身を全て調べてみました。
調べているときに気づいたのですが、var_dump()
によって出力された情報と、実際に取得できる情報がなぜか一致しない点がいくつかあったので、その辺に関してもメモしておきます。
目次
wp_get_current_user()の基本的な使い方
引数はなく、そのままwp_get_current_user()
を呼び出すことでログイン中のユーザー情報を取得できます。
ログイン中のユーザー情報を取得
$user = wp_get_current_user();
主な情報の出力例
echo $user->ID; //ユーザーID
echo $user->user_login; //ログインID
echo $user->user_nicename; //サニタイズ後のログインID
echo $user->user_email; //登録メールアドレス
echo $user->user_status; //ユーザーステータス
echo $user->display_name; //WordPress上の表示名
よく使うものといえばこれくらいでしょうか。
wp_get_current_user()取得できる情報一覧
さて、中身を全て確かめて見たいと思います。
wp_get_current_user()
の結果を代入しておいた変数を var_dump()
して確認してみました。
「管理者」権限でログインしている時に取得できる情報一覧
出力結果
object(WP_User)#1280 (7) {
//基本データオブジェクト
["data"]=> object(stdClass)#1250 (10) {
["ID"] => string() "ID名"
["user_login"] => string() "ログイン名"
["user_pass"] => string() "パスワード (暗号化済み)"
["user_nicename"] => string() "著者アーカイブのURL用の名前"
["user_email"] => string() "メールアドレス"
["user_url"] => string() "ユーザーのサイトurl"
["user_registered"] => string() "登録日"
["user_activation_key"] => string() "アクティベーションキー"
["user_status"] => string() "ステータス"
["display_name"] => string() "表示名"
}
["ID"] => int(1) //ユーザーID
//所有するロールの連想配列
["caps"] => array(1) {
["administrator"] => bool(true)
}
["cap_key"] => string() "ロールのキー名"
//所有するロールの配列
["roles"]=> array(1) {
[0] => string() "administrator"
}
//所有する権限の連想配列
["allcaps"]=> array(63) {
["switch_themes"] => bool(true)
["edit_themes"] => bool(true)
["activate_plugins"] => bool(true)
["edit_plugins"] => bool(true)
["edit_users"] => bool(true)
["edit_files"] => bool(true)
["manage_options"] => bool(true)
["moderate_comments"] => bool(true)
["manage_categories"] => bool(true)
["manage_links"] => bool(true)
["upload_files"] => bool(true)
["import"] => bool(true)
["unfiltered_html"] => bool(true)
["edit_posts"] => bool(true)
["edit_others_posts"] => bool(true)
["edit_published_posts"] => bool(true)
["publish_posts"] => bool(true)
["edit_pages"] => bool(true)
["read"] => bool(true)
["level_10"] => bool(true)
["level_9"] => bool(true)
["level_8"] => bool(true)
["level_7"] => bool(true)
["level_6"] => bool(true)
["level_5"] => bool(true)
["level_4"] => bool(true)
["level_3"] => bool(true)
["level_2"] => bool(true)
["level_1"] => bool(true)
["level_0"] => bool(true)
["edit_others_pages"] => bool(true)
["edit_published_pages"] => bool(true)
["publish_pages"] => bool(true)
["delete_pages"] => bool(true)
["delete_others_pages"] => bool(true)
["delete_published_pages"] => bool(true)
["delete_posts"] => bool(true)
["delete_others_posts"] => bool(true)
["delete_published_posts"] => bool(true)
["delete_private_posts"] => bool(true)
["edit_private_posts"] => bool(true)
["read_private_posts"] => bool(true)
["delete_private_pages"] => bool(true)
["edit_private_pages"] => bool(true)
["read_private_pages"] => bool(true)
["delete_users"] => bool(true)
["create_users"] => bool(true)
["unfiltered_upload"] => bool(true)
["edit_dashboard"] => bool(true)
["update_plugins"] => bool(true)
["delete_plugins"] => bool(true)
["install_plugins"] => bool(true)
["update_themes"] => bool(true)
["install_themes"] => bool(true)
["update_core"] => bool(true)
["list_users"] => bool(true)
["remove_users"] => bool(true)
["promote_users"] => bool(true)
["edit_theme_options"] => bool(true)
["delete_themes"] => bool(true)
["export"] => bool(true)
["aiosp_manage_seo"] => bool(true)
["administrator"] => bool(true)
}
["filter"] => string() "フィルター名"
}
めーちゃくちゃありますね。笑
「購読者」権限でログインしている時に取得できる情報一覧
出力結果
object(WP_User)#1264 (7) {
["data"]=> object(stdClass)#1250 (10) {
["ID"]
["user_login"]
["user_pass"]
["user_nicename"]
["user_email"]
["user_url"]
["user_registered"]
["user_activation_key"]
["user_status"]
["display_name"]
}
["ID"]
["caps"]=> array(1) {
["subscriber"] => bool(true)
}
["cap_key"]
["roles"]=> array(1) {
[0] => string(10) "subscriber"
}
["allcaps"]=> array(3) {
["read"] => bool(true)
["level_0"] => bool(true)
["subscriber"] => bool(true)
}
["filter"]
}
ぐっと情報量が減りました。
var_dumpで見える情報と異なる点
var_dump()
してみて中身を確認してみましたが、注意すべき点がいくつかあったので、メモしておきます。
var_dumpしても出てこないが情報が取得できるもの
$user->last_name //string 苗字
$user->first_name //string 名前
階層通りじゃなくても取得できるもの ('data'の中身全般)
$user->email;
$user->user_login;
/* ...etc */
同じ情報を取得できるが、階層によって型が変わるもの
$user->ID //int
$user->data->ID //strig
$user->user_status //int
$user->data->user_status //strig
他にもあるかもしれないです。
階層を省略してもエラーにはならないが、空文字になるもの
$user->administrator //string ""
//本来は以下
$user->allcaps['administrator'] //bool true
$user->caps['administrator'] //bool true
う〜ん...
特に気になるのが、 last_name
や first_name
などの、var_dumpしても表示されないのに情報が取得できるもの。
たまにこういうのに遭遇しますが、一体どういうことなんでしょうか…。