如何解决WooCommerce-在用户注册时将显示名称设置为名字
我正在尝试将注册时用户的显示名称设置为他们的名字。
以下功能有效,但仅在用户登录时有效,而不在用户首次注册时有效(如果他们注销并再次登录,则此功能生效):
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,'display_name' => $outcome));
}
}
add_action('user_register',2);
因此,如果我按如下所示删除其中一个参数,则它不会出错,但也不起作用:
function force_pretty_displaynames($user) {
$outcome = trim(get_user_meta($user->ID,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;
}
解决方法
我找到了解决方案-另一个钩子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;
}
经过测试,可以正常工作!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。