我使用 Elementor Essential Addons 在 wordpress 上創建了一個注冊表單。
注冊表單中沒有“用戶名”欄位,因為我希望用戶使用電子郵件地址和密碼登錄(他們永遠不會在預定義的 url 結構之外看到實際的用戶名)。
因此,我將用戶名設定為在后臺自動生成為 'first_name.'-'.last_name"。這與以下代碼一起使用效果很好:
add_filter( 'pre_user_login', 'name_as_username' );
function name_as_username( $user_login ) {
if(isset($_POST['first_name'])) $first_name = $_POST['first_name'];
if(isset($_POST['last_name'])) $last_name = $_POST['last_name'];
{
$user_login = $_POST['first_name'].'-'.$_POST['last_name'];
return $user_login;
}
}
如果用戶名已存在于我的 Wordpress 資料庫中,我正在努力在用戶名末尾添加一個增量數字。
換句話說,如果“John-Doe”已經存在,則自動將用戶名設定為“John-Doe1”。如果“John-Doe1”已經存在,則自動將用戶名設定為“John-Doe2”等等。
我查看了多個其他執行緒,但似乎無法獲得任何解決方案:
如果重復,如何在用戶名末尾添加額外的數字
如果在資料庫中找到,則向 MySQL 值添加一個數字
下面是我嘗試開始作業的最后一個完整代碼片段。任何幫助將不勝感激!
add_filter( 'pre_user_login', 'name_as_username' );
function name_as_username( $user_login ) {
if(isset($_POST['first_name'])) $first_name = $_POST['first_name'];
if(isset($_POST['last_name'])) $last_name = $_POST['last_name'];
{
$user_login = $_POST['first_name'].'-'.$_POST['last_name'];
return $user_login;
$i = 0;
do {
//Check in the database here
$exists = exists_in_database($user_login);
if($exists) {
$i ;
$user_login = $user_login . $i;
}
}
while($exists);
//save $username
}
}
uj5u.com熱心網友回復:
你很親近。您需要使用 WordPress 函式get_user_by()來查找要檢查的登錄名。false如果找不到用戶,則回傳。
像這樣的代碼會做到這一點。
...
$original_login = $user_login;
do {
//Check in the database here
$exists = get_user_by( 'login', $user_login ) !== false;
if($exists) {
$i ;
$user_login = $original_login . $i;
}
} while($exists);
當然可以將您自己的表格添加到 WordPress,但您需要在插件或主題中這樣做;它們具有激活和停用掛鉤,允許您創建和洗掉表。就您的問題而言,它沒有絲毫必要也沒有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/348202.html
標籤:php WordPress的 元素 用户注册
上一篇:每頁需要頁腳和頁眉,但錯誤500
