![](/img/trans.png)
[英]how to change $_SESSION['user_login'] to laravel?
[英]How to check if existing user_login in WordPress and create new user programatically by appending to an existing user_login
在我的 WP v5.8.1 中,我使用wp_create_user
從公共表單以編程方式創建新用戶。 將通過結合first_name
和last_name
創建新的 user_login
$new_username = strtolower(str_replace(' ', '', $_POST['first_name']) . '-' . str_replace(' ', '', $_POST['last_name']));
但是,可能存在具有相同 user_login 的現有用戶。 因此,我想使用以下函數將數字(1、2、3、4 等)附加到新的user_login
中:
if (username_exists($new_username)) {
create_new_username();
} else {
$new_username = $new_username;
}
function create_new_username() {
$count = 0;
while (username_exists($new_username)) :
$new_username = $new_username . '-' . $count + 1;
$count++;
if (!username_exists($new_username)) {
$create_username = $new_username;
}
endwhile;
return $new_username;
}
echo create_username();
如果user_login
存在,上述函數返回現有的user_login
用戶 ID; 它不是創建新的user_login
並附加數字。
編輯1:
我修改了下面的代碼而沒有編寫單獨的函數:
$new_username = strtolower(str_replace(' ', '', $_POST['first_name']) . '-' . str_replace(' ', '', $_POST['last_name']));
if (username_exists($new_username)) {
$count = 0;
while (username_exists($new_username)) :
$new_username = $new_username . '-' . ($count + 1);
$count++;
endwhile;
}
echo $new_username;
如果用戶存在,這將返回一個新的user_login
; 然而,它不是從($count + 1)
附加一個新的序列號,而是添加另一個新數字,如下所示:
而我需要這樣的用戶名:
您的函數create_new_username()
需要變量$new_username
它不會自動傳遞給此函數,因此未定義。
function create_new_username($new_username) {
$count = 0;
while (username_exists($new_username)) :
$new_username = $new_username . '-' . $count + 1;
$count++;
if (!username_exists($new_username)) {
$create_username = $new_username;
}
endwhile;
return $new_username;
}
然后你開始你的if(username_exists())
調用......我必須通過其他一些鈎子假設,你必須將變量$new_username
給你的username_exists()
函數。
if (username_exists($new_username)) {
create_new_username($new_username);
}
因為你的else
都不做,所以沒有必要。 $new_username
已經等於$new_username
回答我自己的問題,@Howard E 的評論幫助我實現了我想要的:
以下是從公共表單提交中創建的新用戶名:
$new_username = strtolower(str_replace(' ', '', $_POST['first_name']) . '-' . str_replace(' ', '', $_POST['last_name']));
使用下面的代碼,我可以檢查user_login
是否存在,如果存在附加序列號以創建新的user_login
:
if (username_exists($new_username)) { // check if user_login exists
while (username_exists($new_username)) :
$count = preg_match_all("/.*?(\d+)$/", $new_username, $matches); // check if the existing user_login has serialised number at the end
if ($count) { // if user_login has number at the end
$new_username = rtrim($new_username, '-' . $count); // remove the number and '-' also before the number
} else {
$count = 0; // else keep the count as 0 to add to the submitted user_login from the public form
}
$new_username = $new_username . '-' . ($count + 1); // this will create a new serialised user_login with numbering continuation from previous, else create new user_login as per form submission
$count++;
endwhile;
}
echo $new_username;
現在正在創建 user_logins 如下:
請評論代碼是否仍然可以更簡單和高效?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.