有没有人知道我可以像所有用户一样公开更改现有的显示名称.我想将名字姓氏作为默认名称,因为这将反映在论坛中.我已经阅读了所有的论坛,并尝试了所有的黑客,任何建议将不胜感激.提前致谢
rjb*_*rjb 11
这是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 );
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
使用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);
Run Code Online (Sandbox Code Playgroud)
对我来说(使用WP 3.4.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));
在WP 3.3.1上,但应在更高版本上工作。
归档时间: |
|
查看次数: |
11034 次 |
最近记录: |