Cómo insertar nuevos valores en los campos Nombre y Apellido de usuario en WordPress mediante la base de datos

3 may 2016, 15:37:19
Vistas: 14.3K
Votos: 4

Tengo un formulario de registro personalizado en mi sitio WordPress que tiene funcionalidad de correo de confirmación para activar la cuenta. Para el paso de confirmación estoy manteniendo otra tabla en la base de datos donde guardo la información de usuarios pendientes y cuando hacen clic en el enlace de confirmación copio la información de esa tabla y la agrego a la tabla wp_users. El problema es que tengo campos de Nombre y Apellido cuya información se guarda en otra tabla de WordPress llamada wp_usermeta.

Mi pregunta es cómo puedo insertar el nombre y apellido correspondientes al usuario cuando lo agrego a wp_users después de la confirmación, como muestra este código:

$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
Comentarios

¿Algún avance en la pregunta/respuesta?

kaiser kaiser
20 may 2016 14:14:41
Todas las respuestas a la pregunta 2
2
15

Si tienes el ID del usuario puedes hacer esto:

wp_update_user([
    'ID' => $userId, // este es el ID del usuario que quieres actualizar.
    'first_name' => $firstName,
    'last_name' => $lastName,
]);

Puedes actualizar/insertar casi todos los campos con esta función. Echa un vistazo a la documentación aquí

3 may 2016 16:40:57
Comentarios

¡Sigue funcionando en 2020!

eyal_katz eyal_katz
3 sept 2020 02:31:57

@eyal_katz También actualicé el enlace.

Refilon Refilon
3 sept 2020 09:58:50
0

Tuve un problema similar (usuarios de prueba en WooCommerce) y escribí este script de shell:

#!/bin/bash

# configurar según tu instalación local
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"
# la contraseña es 'testuser'
TESTUSERPASS='$P$BptzXm87Y8pxffjyy4Ur0ANs8uqW7J.'

function ins_test_user(){
    # 2 parámetros: nombre, apellido
    NAM1="$1"
    NAM2="$2"

    # obtener el último ID no utilizado en wp_users
    SQL="select 1+max(ID) from wp_users into @wpuid;\n"
    # obtener el último ID no utilizado en wp_usermeta
    SQL="${SQL}select 1+max(umeta_id) from wp_usermeta into @wpmid;\n"

    # insertar registro en wp_users
    SQL="${SQL}${INS_WPU} (@wpuid, '${NAM1}${NAM2}','${TESTUSERPASS}','${NAM1} ${NAM2}','${NAM1}.${NAM2}@example.org','http://${NAM1}.${NAM2}.example.com',now(),'',0,'usuario de prueba ${CODE}');\n"

    # insertar registros en 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','algún lugar');\n"
    SQL="${SQL}${INS_WPM}(19+@wpmid,@wpuid,'billing_address_2','la tierra de nunca jamás');\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"

    # confirmar después de cada usuario
    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 abr 2018 22:21:11