2012-02-17 6 views
9

誰もがすべてのユーザーと同じように既存の表示名を公に変更する方法を知っていますか。これはフォーラムに反映されるので、私はfirstname lastnameをデフォルトにしたいと思っています。私はすべてのフォーラムを読んで、すべてのハックを試したが、どんな提案も感謝するだろう。事前に感謝Wordpress既定の表示名を変更するすべての既存のユーザーと同様に

答えて

7

admin_headフックを使用する際の問題は、管理システムを使用していないユーザーに対しては機能しないことです。また、Martyが投稿したソリューションを実装しようとしたところ、update_user_meta()でdisplay_nameを更新できないように見えなかったので、wp_update_user()を使用する必要がありました。すぐに彼らは、ログインとして表示名を置き換えて、OK働き、(WP 3.4.1を使用して)私にとって

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); 

: -

私の提案あなたのfunctions.phpファイルでこれを置きます。

-2

迅速かつ汚いハックは、ファイルを編集することであろう 'WP-含ま/ user.php' 編集にfolowing

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、adminです..

が、あなたが探して何をすべき..

出典:http://wordpress.org/support/topic/change-default-display-name-1

マーティ

+0

は、私は次のコードでそれを行うことができました$ current_user-> ID; \t \t \t \t $ loginfullname = $ current_user-> user_firstname。 '   '。$ current_user-> user_lastname; \t \t \t \t wp_update_user(配列( 'ID' => $ user_id、 'display_name' => $ loginfullname)); – uknowit2

+1

コアファイルやプラグインファイルを決して編集しないでください。マーティの2番目の提案のようなフック(またはオーバーライド)を使用してください。 – ljelewis

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経由でユーザーをたくさんの人にインポートし、すべての表示名を姓と名に変更する必要がありました。だから、私はfunctions.phpとvoilaで一度この機能を実行しました。 :Dもう一度ありがとう!将来のユーザーのために、別のスクリプトを使用して、display_nameを姓と名で強制する予定です。 –

+0

-1 admin_headのすべてのユーザーにこれを行うのは、決して少数のユーザーしか持たないことを計画しない限り、本当に悪い考えです。私はちょうど継承したサイトでこの正確なコードが使用されているのを発見しました。管理者ページには、2000人以下のユーザーがロードするのに約1分かかりました。上記のadd_actionがコメントアウトされたときに500万回を超えるPHPコールが削除されました。今すぐ管理ページが読み込まれます。 – BillK

3

古い質問ですが、私の答えは他の人にとっては有用かもしれません。

実行して、データベースにこのクエリ(あなたは別の接頭辞を持っている場合は、テーブル名を調整する):WP 3.3.1オン

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));

が、それ以降のバージョンで動作するはずです。

9

ここでは、ワードプレスの新しいバージョン(3.8+)で動作richplaneの答えの改良版だ:\t \t \t \t $ user_idを=:acutally

/** 
* 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); 
    } 
} 
関連する問題