Как добавить новые значения в поля Имени и Фамилии пользователя WordPress через базу данных

3 мая 2016 г., 15:37:19
Просмотры: 14.3K
Голосов: 4

У меня есть кастомная форма регистрации на моем сайте 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'
                        )
                    ); 
                }
          }
1
Комментарии

Есть прогресс по вопросу/ответу?

kaiser kaiser
20 мая 2016 г. 14:14:41
Все ответы на вопрос 2
2
15

Если у вас есть ID пользователя, вы можете сделать следующее:

wp_update_user([
    'ID' => $userId, // это ID пользователя, которого вы хотите обновить
    'first_name' => $firstName, // имя пользователя
    'last_name' => $lastName, // фамилия пользователя
]);

Этой функцией можно обновить или добавить почти все поля. Подробнее смотрите в документации.

3 мая 2016 г. 16:40:57
Комментарии

До сих пор работает в 2020 году!

eyal_katz eyal_katz
3 сент. 2020 г. 02:31:57

@eyal_katz Я также обновил ссылку.

Refilon Refilon
3 сент. 2020 г. 09:58:50
0

У меня была похожая проблема (тестовые пользователи 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"
18 апр. 2018 г. 22:21:11