2012-02-17 120 views

回答

7

使用admin_head掛鉤的問題在於,它不適用於不使用管理系統的用戶。另外,我嘗試實現Marty發佈的解決方案失敗了,因爲它似乎並不能通過update_user_meta()更新display_name - 必須使用wp_update_user()。

我的建議 - 把這個在您的functions.php文件:

function force_pretty_displaynames($user_login, $user) { 

    $outcome = trim(get_user_meta($user->ID, 'first_name', true) . " " . get_user_meta($user->ID, 'last_name', true)); 
    if (!empty($outcome) && ($user->data->display_name!=$outcome)) { 
     wp_update_user(array ('ID' => $user->ID, 'display_name' => $outcome));  
    } 
} 
add_action('wp_login','force_pretty_displaynames',10,2); 

對我來說,(使用WP 3.4.1),該工程確定,只要他們登錄替換顯示名稱

-2

快速和骯髒的劈將是編輯文件 'WP-包括/ user.php的' 編輯如下因素

if (empty($display_name)) 
    $display_name = $user_login; 
    $display_name = apply_filters('pre_user_display_name', $display_name); 

編輯這一行

$display_name = $user_login; 

更改爲:

$display_name = $first_name . ' ' . $last_name; 

上述解決方案應該可以工作,假設user.php文件在WordPress upd吃或alternativly你可以添加這樣的事情你的functions.php

//force display-name of users to Firstname Lastname 
add_action('admin_head','force_pretty_displaynames'); 
function force_pretty_displaynames() { 
    $current_user = wp_get_current_user(); 
    if ($current_user->display_name != $current_user->first_name." ".$current_user->last_name){ 
     update_user_meta($current_user->ID, 'display_name', $current_user->first_name." ".$current_user->last_name); 
    } 

} 

但agian在這上面可以添加一些檢查,以查看用戶是否登錄,是管理員,貢獻者etc..etc ..

但應該做你找什麼..

來源:http://wordpress.org/support/topic/change-default-display-name-1

馬蒂

+0

實際上可以我可以用下面的代碼來做到這一點:\t \t \t \t $ USER_ID = $ current_user-> ID; \t \t \t \t $ loginfullname = $ current_user-> user_firstname。'  '。$ current_user-> user_lastname; (數組('ID'=> $ user_id,'display_name'=> $ loginfullname)); – uknowit2 2012-04-11 09:55:32

+1

永遠不要編輯核心或插件文件。使用鉤子(或覆蓋)就像馬蒂的第二個建議。 – ljelewis 2015-08-18 10:06:31

0
<?php 

//Sets the user's display name (always) to first name last name, when it's avail. 
add_action ('admin_head','make_display_name_f_name_last_name'); 
function make_display_name_f_name_last_name(){ 

    $users = get_users(array('fields'=>'all')); 

    foreach($users as $user){ 
     $user = get_userdata($user->ID);  

     $display_name = $user->first_name . " " . $user->last_name; 

     if($display_name!=' ') wp_update_user(array ('ID' => $user->ID, 'display_name' => $display_name)); 
      else wp_update_user(array ('ID' => $user->ID, 'display_name' => $user->display_login)); 

     if($user->display_name == '') 
      wp_update_user(array ('ID' => $user->ID, 'display_name' => $user->display_login)); 
    } 
} 

?> 
+0

謝謝@aubreypwd這就是我所需要的。我已經通過CSV導入了一大批用戶,並且需要將每個人的display_name更改爲他們的名字和姓氏。所以我在functions.php和voila中運行過這個函數,一切都完成了! :D再次感謝!對於未來的用戶,我打算使用另一個腳本來強制display_name作爲名和姓。 – 2016-09-10 18:59:49

+0

-1爲admin_head上的所有用戶執行此操作是一個非常糟糕的主意,除非您計劃永遠不會有幾個用戶。我發現這個確切的代碼在我剛剛繼承的網站上使用。管理員頁面花了差不多1分鐘時間才能加載2000個用戶。當上面的add_action被註釋掉時,超過500萬個PHP調用被消除。現在管理頁面立即加載。 – BillK 2016-10-20 03:52:12

3

一個老問題,但我的答案可能對別人有用。

運行數據庫此查詢(調整表名,如果您有其他前綴):

UPDATE wp_users SET display_name = CONCAT((SELECT meta_value FROM wp_usermeta WHERE meta_key = 'first_name' AND user_id = ID), ' ', (SELECT meta_value FROM wp_usermeta WHERE meta_key = 'last_name' AND user_id = ID));

在WP 3.3.1,但應該在以後的版本工作。

9

這裏的richplane的回答的改進版本,在WordPress的新版本作品(3.8+):

/** 
* Format WordPress User's "Display Name" to Full Name on Login 
* ------------------------------------------------------------------------------ 
*/ 

add_action('wp_login', 'wpse_9326315_format_user_display_name_on_login'); 

function wpse_9326315_format_user_display_name_on_login($username) { 
    $user = get_user_by('login', $username); 

    $first_name = get_user_meta($user->ID, 'first_name', true); 
    $last_name = get_user_meta($user->ID, 'last_name', true); 

    $full_name = trim($first_name . ' ' . $last_name); 

    if (! empty($full_name) && ($user->data->display_name != $full_name)) { 
     $userdata = array(
      'ID' => $user->ID, 
      'display_name' => $full_name, 
     ); 

     wp_update_user($userdata); 
    } 
}