根据配置文件自定义字段更改用户用户名

时间:2016-12-21 12:39:17

标签: php wordpress

我创建了一个名为公司名称的自定义字段,我在自定义注册页面上用户注册后使用此字段来更新字段

 update_usermeta($user_id, 'user_company_name', $company_name);

我使用此代码插入用户

            $userdata = array(
                'user_login' => $email,
                'user_email' => $email,
                'user_pass' => $random_password,
                'first_name' => $first_name,
                'last_name' => $last_name,
                'role' =>  $custom_role,
            );

  $user_id = wp_insert_user($userdata);

我想要做的是根据$company_name创建用户用户名,我知道这就像将'user_login' => $email,更改为'user_login' => $company_name,一样简单 但公司名称有时太长,包括符号,斜线,短划线,连接词......等等,我只想使用下划线划分的前2个单词...例如,如果用户公司名称是(The Stack& ;溢出),我希望用户名成为stack_overflow。

还有什么方法可以将此应用于现有会员吗?

2 个答案:

答案 0 :(得分:0)

来源: http://php.net/manual/en/function.explode.php

使用php的explode函数参见这个例子:

<?php
// Example 1
$pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2

// Example 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user; // foo
echo $pass; // *

?>

答案 1 :(得分:0)

删除特殊字符&amp;用_

替换空格
function removeSpecial($string) 
{
   $string = str_replace(' ', '_', $string); // Replaces all spaces with UnderScore.

   return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}

通话功能:

   echo removeSpecial("stack & Overflow");

首先,我们用空格替换下划线,然后从字符串中删除特殊字符。