I'm building a custom settings page in the WordPress Admin Panel and I'm pulling some data from a
WP_User object at one point. I've used this object dozens of times in the actual theme, but in this case I am not seeing the same behavior. The "object" is in
$user, and when I try to use
$user->display_name to retrieve the display name, I am told that I am trying to get a property of a non-object.
Here's the relevant code:
$userID = $assignment->user_id; //existing user ID is passed correctly $user = get_user_by('ID', $userID); //should work fine... print_r($user); //clearly shows an WP_User object in the output echo gettype($user); //returns boolean echo $user->display_name; //says I am trying to get a property of a non-object
Here's the output of
WP_User Object ( [data] => stdClass Object ( [ID] => 1 [user_login] => name [user_pass] => $somehash [user_nicename] => name [user_email] => [email protected] [user_url] => http://example.com [user_registered] => 2017-11-21 17:05:00 [user_activation_key] => [user_status] => 0 [display_name] => bobsmith ) [ID] => 4 [caps] => Array ( [member] => 1 ) [cap_key] => wp_capabilities [roles] => Array (  => member ) [allcaps] => Array ( [activate_plugins] => [create_roles] => [create_users] => [delete_others_pages] => [delete_others_posts] => [delete_pages] => [delete_plugins] => [delete_posts] => [delete_private_pages] => [delete_private_posts] => [delete_published_pages] => [delete_published_posts] => [delete_roles] => [delete_themes] => [delete_users] => [edit_dashboard] => [edit_others_pages] => [edit_others_posts] => [edit_pages] => [edit_posts] => [edit_private_pages] => [edit_private_posts] => [edit_published_pages] => [edit_published_posts] => [edit_roles] => [edit_theme_options] => [edit_users] => [export] => [import] => [install_plugins] => [install_themes] => [list_roles] => [list_users] => [manage_categories] => [manage_links] => [manage_options] => [moderate_comments] => [promote_users] => [publish_pages] => [publish_posts] => [read] => 1 [read_private_pages] => [read_private_posts] => [remove_users] => [restrict_content] => [switch_themes] => [unfiltered_html] => 1 [update_core] => [update_plugins] => [update_themes] => [upload_files] => [member] => 1 ) [filter] => [site_id:WP_User:private] => 1 )
Worst case, I can query the database and pull the value like that, but is there any reason why
WP_User doesn't seem to behave the same in the Admin Panel?