2012-08-16 56 views
2

我正在寫一個基本的插件。這裏是我的代碼:如何從WP_User對象獲取Wordpress用戶的名字?

$new_user = get_userdata($user_id); //$user_id is passed as a parameter 

$first_name1 = $new_user->user_firstname; 
$last_name1 = $new_user->user_lastname; 
    echo "<" . $first_name1 . $last_name1 . ">"; 
    //returns: <> 

$first_name2 = $new_user-first_name; 
$last_name2 = $new_user->last_name; 
    echo "<" . $first_name2 . $last_name2 . ">"; 
    //returns: <> 

根據the codex,這應該工作,但是當我贊同$first_name$last_name他們是空的。奇怪的是,這工作:

$id = $new_user->ID; 

難道我做錯了什麼?

UPDATE:

var_dump$new_user和這些屬性都沒有在那裏!這是因爲我從/ mu-plugins目錄中的插件中調用它?那些屬性是否稍後添加?

object(WP_User)#334 (7) { ["data"]=> object(stdClass)#330 (10) { ["ID"]=> string(3) "758" ["user_login"]=> string(7) "emerson" ["user_pass"]=> string(34) "$P$BB2PuvRbyGUSVZR1M8FLSujPvMO2MW0" ["user_nicename"]=> string(7) "emerson" ["user_email"]=> string(16) "[email protected]" ["user_url"]=> string(0) "" ["user_registered"]=> string(19) "2012-08-17 01:03:27" ["user_activation_key"]=> string(0) "" ["user_status"]=> string(1) "0" ["display_name"]=> string(7) "emerson" } ["ID"]=> int(758) ["caps"]=> array(1) { ["subscriber"]=> string(1) "1" } ["cap_key"]=> string(15) "wp_capabilities" ["roles"]=> array(1) { [0]=> string(10) "subscriber" } ["allcaps"]=> array(15) { ["read"]=> bool(true) ["level_0"]=> bool(true) ["read_questions"]=> bool(true) ["read_answers"]=> bool(true) ["publish_questions"]=> bool(true) ["immediately_publish_questions"]=> bool(true) ["publish_answers"]=> bool(true) ["read_private_forums"]=> bool(true) ["publish_topics"]=> bool(true) ["edit_topics"]=> bool(true) ["publish_replies"]=> bool(true) ["edit_replies"]=> bool(true) ["assign_topic_tags"]=> bool(true) ["access_s2member_level0"]=> bool(true) ["subscriber"]=> string(1) "1" } ["filter"]=> NULL } 

UPDATE2:

我嘗試這樣做:

$user_meta = get_user_meta($new_user->ID); 
var_dump($user_meta); 

,我得到這個(姓氏,即使他們在用戶的個人資料正在定義FIRST_NAME爲空):

array(11) { ["wp_user_level"]=> array(1) { [0]=> string(1) "0" } ["show_admin_bar_front"]=> array(1) { [0]=> string(4) "true" } ["wp_capabilities"]=> array(1) { [0]=> string(32) "a:1:{s:10:"subscriber";s:1:"1";}" } ["use_ssl"]=> array(1) { [0]=> string(1) "0" } ["admin_color"]=> array(1) { [0]=> string(5) "fresh" } ["comment_shortcuts"]=> array(1) { [0]=> string(5) "false" } ["rich_editing"]=> array(1) { [0]=> string(4) "true" } ["description"]=> array(1) { [0]=> string(0) "" } ["nickname"]=> array(1) { [0]=> string(7) "emerson" } ["last_name"]=> array(1) { [0]=> string(0) "" } ["first_name"]=> array(1) { [0]=> string(0) "" } } 
+0

var_dump($ new_user);您將看到該對象的具體內容和不可用內容。 – 2012-08-17 00:58:27

+0

這些屬性丟失!我剛剛更新了var_dump的問題。我很困惑爲什麼這些屬性不存在。 – emersonthis 2012-08-17 01:09:17

+0

您必須將ID傳遞給'get_user_meta'函數。 – inigomedina 2012-08-17 09:17:15

回答

7

用戶的名字和姓氏存儲在user_meta中。

http://codex.wordpress.org/Function_Reference/get_user_meta

所以,如果你想訪問所有的數據,例如,試試這個:

$user_meta = get_user_meta($new_user->ID); 

或者,如果你想訪問一個meta值,嘗試這個:

$last_name = get_user_meta($new_user->ID, 'last_name', true); 
+0

我也嘗試過,它不起作用。我用'get_user_meta()'定義'var_dump'ed'$ last_name'並且它是空的。 – emersonthis 2012-08-17 14:37:04

+0

我用輸出更新了問題。 – emersonthis 2012-08-17 15:36:45

+0

您是否真的爲$ new_user設置了這些信息?你看到了usermeta的結構,但是,對嗎?這些信息應該在設置時存在...... – 2012-08-17 16:49:47

1

我想你是同一個人在Wordpress StackExchange中詢問similar question的東西。

它本身並不是一個答案,但是一個解釋似乎是,當從mu-plugins代碼中調用這些元字段時,WP平臺本身存在一個錯誤。

我最近經歷了這個自己,我在我的functions.php中有一些代碼在user_register鉤子上被調用。當這個鉤子在mu-plugins中定義時,我得到了你所報告的問題。當那個鉤子在我的functions.php中定義時,它工作正常。

相關問題