2016-03-09 34 views
1

當使用Wordpress api創建用戶時(http://codex.wordpress.org/Function_Reference/wp_create_user)是否有指定個人資料照片/頭像的方法?如何通過json api創建Wordpress用戶時指定個人資料照片url

我不希望顯示標準gravatar。我想指定一個照片網址。

下面是示例代碼:

$user_id = username_exists($user_name); 
if (!$user_id and email_exists($user_email) == false) { 
    $random_password = wp_generate_password($length=12, $include_standard_special_chars=false); 
    $user_id = wp_create_user($user_name, $random_password, $user_email); 
} else { 
    $random_password = __('User already exists. Password inherited.'); 
} 
+2

我認爲你必須爲用戶圖像創建自己的自定義設置,或使用第三方插件。 –

回答

2

WordPress的沒有功能添加自定義圖像爲用戶。有兩種方式來顯示配置文件圖像:

1.化身:改變avator,你應該去Settings > Discussion部分WordPress的管理面板。向下滾動底部,你可以看到有幾個默認的avator默認選項。

2. Gravatar:要在用戶檔案中使用Gravator圖片,您應註冊https://en.gravatar.com。如果註冊的電子郵件地址與'Gravator'電子郵件相匹配,Wordpress會自動抓取圖片。

解決方案爲您提供:

當您創建用戶,可以作爲元字段添加圖片的網址給用戶。請看下面的例子:

$user_name = 'userid'; 
$user_email = '[email protected]'; 
$user_id = username_exists($user_name); // check if user exist 

if (!$user_id and email_exists($user_email) == false) { // if user does not exist 

    $random_password = wp_generate_password($length=12, $include_standard_special_chars=false); // generate random password 

    $user_id = wp_create_user($user_name, $random_password, $user_email); // creating new user 

    $img_url = 'http://orig15.deviantart.net/9faa/f/2011/006/e/9/there__s_something_about_molly_by_avator-d36l074.jpg'; // this is a sample image url but you should add the image url from json api 

    add_user_meta($user_id, '_user_img_url', $img_url); // save the image url as meta field where meta key is _user_img_url 

    } else { 

     $random_password = __('User already exists. Password inherited.'); 

    } 

現在的問題是,你將如何獲取圖像的URL:

// assume that the user id is 6 
$user_id = 6; 
// met key what we used to create user 
$key = '_user_img_url'; 
// If true return value of meta data field 
$single = true; 
// get the image url 
$user_img_url = get_user_meta($user_id, $key, $single); 

所以,現在你應該echo的圖片網址html圖片標籤:

<img src="<?=$user_img_url; ?>" alt=""/> 

希望它能幫助你。

-1

您可以手動設置頭像供用戶使用wp_insert_attachent。因爲秒參數是

1)下載圖像wp_upload_dir

服務器上的文件的

位置,則應使用該步驟。使用絕對路徑而不是文件的URI 。該文件必須在上傳目錄

2)創建附件與wp_insert_attachent

3)將化身用戶與update_user_meta

這樣的代碼可以是這樣的(我前不久寫了什麼的我們wordpress,所以也許這個代碼不能馬上工作,所以可能需要一些改進):

// url for user avatar 
$imageUrl = '...'; 
$user_id = username_exists($user_name); 
if (!$user_id and email_exists($user_email) == false) { 

    $random_password = wp_generate_password(
     $length=12, $include_standard_special_chars=false); 

    $user_id = wp_create_user(
     $user_name, $random_password, $user_email); 

    $upload_dir = wp_upload_dir(); 

    // Download file by url and save it 
    // to our file system into $upload_dir 
    $file = $upload_dir.DIRECTORY_SEPARATOR.$user_id. 
     'avatar_'.basename($imageUrl); 
    copy($imageUrl, $file); 

    // Create attachment 
    $wp_filetype = wp_check_filetype(basename($file), null); 
    $attachment = array(
     'guid' => $upload_dir['url'] . 
      DIRECTORY_SEPARATOR . basename($file), 
     'post_mime_type' => $wp_filetype['type'], 
     'post_title' => preg_replace('/\.[^.]+$/', '', basename($file)), 
     'post_content' => '', 
     'post_status' => 'inherit' 
    ); 
    $attach_id = wp_insert_attachment($attachment, $file); 
    $attach_data = wp_generate_attachment_metadata($attach_id, $file); 
    wp_update_attachment_metadata($attach_id, $attach_data); 

    // Attach avatar to user 
    delete_metadata('post', null, '_wp_attachment_wp_user_avatar', 
     $user_id, true); 
    update_user_meta($user_id, '_wp_attachment_wp_user_avatar', $attach_id); 
    update_user_meta($user_id, 
     $wpdb->get_blog_prefix($blog_id) . 'user_avatar', $attach_id); 

} else { 
    $random_password = __('User already exists. Password inherited.'); 
} 
相關問題