Come inserire nuovi valori nei campi Nome e Cognome utente di Wordpress tramite DB

3 mag 2016, 15:37:19
Visualizzazioni: 14.3K
Voti: 4

Ho un modulo di registrazione personalizzato nel mio sito WordPress che include una funzionalità di email di conferma per attivare l'account. Per la fase di conferma sto utilizzando un'altra tabella del database dove memorizzo le informazioni degli utenti in attesa e quando accedono tramite il link di conferma copio le informazioni da quella tabella e le aggiungo alla tabella wp_users. Il problema è che ho i campi Nome e Cognome le cui informazioni sono memorizzate in un'altra tabella di WordPress chiamata wp_usermeta.

Quindi la mia domanda è: come posso inserire il nome e cognome corrispondenti dell'utente quando lo aggiungo a wp_users dopo la conferma, come in questo esempio:

$checkUserID = $wpdb->get_results("SELECT * FROM pendingwpusers WHERE token = '".$gettokenval."'");
          $checkUserIDMain = $wpdb->query("SELECT * FROM store_users WHERE TrackNumber = '".$gettokenval."'"); 
          // Verifica se esistono utenti con questo token
         //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
Commenti

Ci sono progressi sulla domanda/risposta?

kaiser kaiser
20 mag 2016 14:14:41
Tutte le risposte alla domanda 2
2
15

Se hai l'ID dell'utente puoi fare questo:

wp_update_user([
    'ID' => $userId, // questo è l'ID dell'utente che vuoi aggiornare.
    'first_name' => $firstName,
    'last_name' => $lastName,
]);

Puoi aggiornare/inserire quasi tutti i campi con questa funzione. Dai un'occhiata alla documentazione qui

3 mag 2016 16:40:57
Commenti

Funziona ancora nel 2020!

eyal_katz eyal_katz
3 set 2020 02:31:57

@eyal_katz Ho aggiornato anche il link.

Refilon Refilon
3 set 2020 09:58:50
0

Ho avuto un problema simile (utenti di test per WooCommerce) e ho scritto questo script shell:

#!/bin/bash

# impostazioni per la tua configurazione locale
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 password è 'testuser'
TESTUSERPASS='$P$BptzXm87Y8pxffjyy4Ur0ANs8uqW7J.'

function ins_test_user(){
    # 2 parametri: nome, cognome
    NAM1="$1"
    NAM2="$2"

    # ottieni l'ultimo ID non utilizzato in wp_users
    SQL="select 1+max(ID) from wp_users into @wpuid;\n"
    # ottieni l'ultimo ID non utilizzato in wp_usermeta
    SQL="${SQL}select 1+max(umeta_id) from wp_usermeta into @wpmid;\n"

    # inserisci record in 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"

    # inserisci record in 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"

    # commit dopo ogni utente
    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 apr 2018 22:21:11