Как добавить новые значения в поля Имени и Фамилии пользователя WordPress через базу данных
У меня есть кастомная форма регистрации на моем сайте WordPress с функцией подтверждения email для активации аккаунта. На этапе подтверждения я храню информацию о неподтвержденных пользователях в отдельной таблице базы данных, и когда они переходят по ссылке подтверждения, я копирую информацию из этой таблицы и добавляю в таблицу wp_users. Проблема в том, что у меня есть поля Имя и Фамилия, информация которых хранится в другой таблице WordPress под названием wp_usermeta.
Мой вопрос: как я могу добавить соответствующие имя и фамилию пользователя при добавлении пользователя в wp_users после подтверждения, как показано ниже:
$checkUserID = $wpdb->get_results("SELECT * FROM pendingwpusers WHERE token = '".$gettokenval."'");
$checkUserIDMain = $wpdb->query("SELECT * FROM store_users WHERE TrackNumber = '".$gettokenval."'");
//$aaaa = mysql_num_rows($checkUserIDMain);
//var_dump($checkUserIDMain);
if($checkUserID && $checkUserIDMain == 0){
foreach ($checkUserID as $checkUser) {
//if(wp_mail($to, $subject, $message, $header)){}else{mail($to, $subject, $message, $header);}
$hashedpass = md5($checkUser->user_pass);
$wpdb->insert(
'store_users',
array(
'user_login' => $checkUser->user_login,
'user_pass' => $hashedpass,
'user_nicename' => $checkUser->user_nicename,
'user_email' => $checkUser->user_email,
'user_registered' => $checkUser->user_registered,
'display_name' => $checkUser->display_name,
'TrackNumber' => $checkUser->token
),
array(
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s',
'%s'
)
);
}
}

Если у вас есть ID пользователя, вы можете сделать следующее:
wp_update_user([
'ID' => $userId, // это ID пользователя, которого вы хотите обновить
'first_name' => $firstName, // имя пользователя
'last_name' => $lastName, // фамилия пользователя
]);
Этой функцией можно обновить или добавить почти все поля. Подробнее смотрите в документации.

У меня была похожая проблема (тестовые пользователи WooCommerce), и я написал этот скрипт для оболочки:
#!/bin/bash
# настройки для вашей локальной установки
DB=wordpress ; DBUSER=wordpress ; DBPASS=wordpress
INS_WPU="INSERT INTO wp_users (ID, user_login, user_pass, user_nicename, user_email, user_url, user_registered, user_activation_key, user_status, display_name) VALUES"
INS_WPM="INSERT INTO wp_usermeta (umeta_id, user_id, meta_key, meta_value) VALUES"
# пароль 'testuser'
TESTUSERPASS='$P$BptzXm87Y8pxffjyy4Ur0ANs8uqW7J.'
function ins_test_user(){
# 2 параметра: имя, фамилия
NAM1="$1"
NAM2="$2"
# получаем последний неиспользованный ID в wp_users
SQL="select 1+max(ID) from wp_users into @wpuid;\n"
# получаем последний неиспользованный ID в wp_usermeta
SQL="${SQL}select 1+max(umeta_id) from wp_usermeta into @wpmid;\n"
# вставляем запись в wp_users
SQL="${SQL}${INS_WPU} (@wpuid, '${NAM1}${NAM2}','${TESTUSERPASS}','${NAM1} ${NAM2}','${NAM1}.${NAM2}@example.org','http://${NAM1}.${NAM2}.example.com',now(),'',0,'test user ${CODE}');\n"
# вставляем записи в wp_usermeta
SQL="${SQL}${INS_WPM}(0+@wpmid,@wpuid,'billing_phone','');\n"
SQL="${SQL}${INS_WPM}(1+@wpmid,@wpuid,'nickname','${NAM1} ${NAM2}');\n"
SQL="${SQL}${INS_WPM}(2+@wpmid,@wpuid,'first_name','${NAM1}');\n"
SQL="${SQL}${INS_WPM}(3+@wpmid,@wpuid,'last_name','${NAM2}');\n"
SQL="${SQL}${INS_WPM}(4+@wpmid,@wpuid,'description','');\n"
SQL="${SQL}${INS_WPM}(5+@wpmid,@wpuid,'rich_editing','true');\n"
SQL="${SQL}${INS_WPM}(6+@wpmid,@wpuid,'syntax_highlighting','true');\n"
SQL="${SQL}${INS_WPM}(7+@wpmid,@wpuid,'comment_shortcuts','false');\n"
SQL="${SQL}${INS_WPM}(8+@wpmid,@wpuid,'admin_color','fresh');\n"
SQL="${SQL}${INS_WPM}(9+@wpmid,@wpuid,'use_ssl','0');\n"
SQL="${SQL}${INS_WPM}(10+@wpmid,@wpuid,'show_admin_bar_front','true');\n"
SQL="${SQL}${INS_WPM}(11+@wpmid,@wpuid,'locale','');\n"
SQL="${SQL}${INS_WPM}(12+@wpmid,@wpuid,'wp_capabilities','a:1:{s:8:\"customer\";b:1;}');\n"
SQL="${SQL}${INS_WPM}(13+@wpmid,@wpuid,'wp_user_level','0');\n"
SQL="${SQL}${INS_WPM}(14+@wpmid,@wpuid,'dismissed_wp_pointers','');\n"
SQL="${SQL}${INS_WPM}(15+@wpmid,@wpuid,'billing_first_name','${NAM1}');\n"
SQL="${SQL}${INS_WPM}(16+@wpmid,@wpuid,'billing_last_name','${NAM2}');\n"
SQL="${SQL}${INS_WPM}(17+@wpmid,@wpuid,'billing_company','');\n"
SQL="${SQL}${INS_WPM}(18+@wpmid,@wpuid,'billing_address_1','somewhere');\n"
SQL="${SQL}${INS_WPM}(19+@wpmid,@wpuid,'billing_address_2','la la land');\n"
SQL="${SQL}${INS_WPM}(20+@wpmid,@wpuid,'billing_city','X');\n"
SQL="${SQL}${INS_WPM}(21+@wpmid,@wpuid,'billing_postcode','90210');\n"
SQL="${SQL}${INS_WPM}(22+@wpmid,@wpuid,'billing_country','AF');\n"
SQL="${SQL}${INS_WPM}(23+@wpmid,@wpuid,'billing_state','');\n"
SQL="${SQL}${INS_WPM}(24+@wpmid,@wpuid,'billing_email','${NAM1}.${NAM2}@example.org');\n"
SQL="${SQL}${INS_WPM}(25+@wpmid,@wpuid,'shipping_first_name','');\n"
SQL="${SQL}${INS_WPM}(26+@wpmid,@wpuid,'shipping_last_name','');\n"
SQL="${SQL}${INS_WPM}(27+@wpmid,@wpuid,'shipping_company','');\n"
SQL="${SQL}${INS_WPM}(28+@wpmid,@wpuid,'shipping_address_1','');\n"
SQL="${SQL}${INS_WPM}(29+@wpmid,@wpuid,'shipping_address_2','');\n"
SQL="${SQL}${INS_WPM}(30+@wpmid,@wpuid,'shipping_city','');\n"
SQL="${SQL}${INS_WPM}(31+@wpmid,@wpuid,'shipping_postcode','');\n"
SQL="${SQL}${INS_WPM}(32+@wpmid,@wpuid,'shipping_country','');\n"
SQL="${SQL}${INS_WPM}(33+@wpmid,@wpuid,'shipping_state','');\n"
# фиксируем после каждого пользователя
SQL="${SQL}commit;\n"
echo -e "$SQL"
}
{
echo "set autocommit=off;\n"
ins_test_user jane doe
ins_test_user joe bloggs
ins_test_user architeuthis dux
ins_test_user ftagn fnord
ins_test_user pete brick
ins_test_user kaiser soze
echo "set autocommit=on;\n"
} | mysql -D $DB -u $DBUSER --password="$DBPASS"
