Wordpress更改默认显示名称Publicy适用于所有现有用户

时间:2012-02-17 10:09:20

标签: wordpress

有没有人知道我可以像所有用户一样公开更改现有的显示名称。我想将名字姓氏作为默认名称,因为这将反映在论坛中。我已经阅读了所有的论坛,并尝试了所有的黑客,任何建议将不胜感激。提前致谢

6 个答案:

答案 0 :(得分:10)

以下是 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 );
    }
}

答案 1 :(得分:7)

使用admin_head挂钩的问题在于它不适用于不使用admin系统的用户。此外,我尝试实现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 :(得分:4)

一个老问题,但我的回答可能对其他人有用。

在您的数据库上运行此查询(如果您有其他前缀,请调整表名称):

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上,但应该适用于更高版本。

答案 3 :(得分: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) );
    }   
}

?>

答案 4 :(得分:0)

在function.php中使用此代码 此代码仅用于更改display_name,并用first_name加上last_name的首字母替换新用户或更新用户的信息。

//Change the publicly displayed name on comments
	add_filter('pre_user_display_name','default_display_name');
		function default_display_name($name) {
			 global $current_user;
     		 get_currentuserinfo();
			
		 $lastname=mb_substr($current_user->user_lastname, 0, 1, "UTF-8");
			$name =  ucfirst($current_user->user_firstname) .' '.ucfirst($lastname). '.';
			return $name;
		}

答案 5 :(得分:-2)

快速而肮脏的黑客将编辑文件'wp-includes / 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;

上述解决方案应该有效,假设在WordPress更新中没有更改user.php文件,或者您可以在函数中添加类似的内容.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);
    }

}

但是可以添加上面的一些检查来查看用户是否已登录,是管理员,贡献者等等。等等。

但应该做你想要的......

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

玛蒂