我正在尝试将注册时用户的显示名称设置为他们的名字。
以下功能有效,但仅在用户登录时有效,而不在用户首次注册时有效(如果他们注销并再次登录,则此功能生效):
function force_pretty_displaynames($user_login, $user) {
$outcome = trim(get_user_meta($user->ID, 'first_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_login
更改为user_register
,则由于参数太少而产生错误:
function force_pretty_displaynames($user_login, $user) {
$outcome = trim(get_user_meta($user->ID, 'first_name', true));
if (!empty($outcome) && ($user->data->display_name!=$outcome)) {
wp_update_user( array ('ID' => $user->ID, 'display_name' => $outcome));
}
}
add_action('user_register','force_pretty_displaynames',10,2);
因此,如果我按如下所示删除其中一个参数,则它不会出错,但也不起作用:
function force_pretty_displaynames($user) {
$outcome = trim(get_user_meta($user->ID, 'first_name', true));
if (!empty($outcome) && ($user->data->display_name!=$outcome)) {
wp_update_user( array ('ID' => $user->ID, 'display_name' => $outcome));
}
}
add_action('user_register','force_pretty_displaynames',10,2);
如何在注册时将显示名称设置为名字?
我有this function可以在注册时将用户名设置为完整的电子邮件地址,我可以通过某种方式将其添加到其中吗?
add_filter( 'pre_user_login' , 'cfw_set_username_to_email' );
function cfw_set_username_to_email( $user_login ) {
if( isset($_POST['billing_email'] ) ) {
$user_login = $_POST['billing_email'];
}
if( isset($_POST['email'] ) ) {
$user_login = $_POST['email'];
}
return $user_login;
}
答案 0 :(得分:0)
我找到了解决方案-另一个钩子pre_user_display_name
确实可以满足我的需要,它使用的功能与我已经为pre_user_login
拥有的功能类似
add_filter( 'pre_user_display_name' , 'cfw_set_display_name_to_forename' );
function cfw_set_display_name_to_forename( $display_name ) {
if( isset($_POST['billing_first_name'] ) ) {
$display_name = $_POST['billing_first_name'];
}
if( isset($_POST['first_name'] ) ) {
$display_name = $_POST['first_name'];
}
return $display_name;
}
经过测试,可以正常工作!