Telefono: +39 392 33 73 731

Wordpress: aggiungere o modificare un utente amministratore via database

Può capitare che un cliente ci consegni il backup di un sito Wordpress, da ripristinare in nuovo hosting (tipico cliente in fuga da una brutta esperienza).
Potrebbe avere le credenziali Wordpress, ma non da utente amministratore. O peggio, non ha mai avuto un account nel suo sito. Se questa è la tua situazione sei capitato nella pagina giusta, ora ti spiego come fare.

Nel primo caso è più facile, basta promuovere l'utente del cliente ad amministratore, così puoi prendere il controllo del sito e fare tutte le operazioni necessarie. Nel secondo caso devi creare un utente nuovo, usando delle query di inserimento.

Caso di modifica utente esistente

Accedi al database MySqL con un tool tipo PhpMyAdmin. Apri la tabella "wp_users" per vedere gli utenti elencati, e segna il numero ID, del tuo utente.
Apri la tabella "wp_usermeta" e cerca tutti i record con user_id = 3 (tasto in alto "Cerca"). Oppure lancia la query seguente, se preferisci.

SELECT * FROM `wp_usermeta` WHERE `user_id` = 3

Dall'elenco dell'utente ID 3, devi modificare solo 2 righe: i valori dei campi meta_value in corrispondenza dei meta_key "wp_user_level" e "wp_capabilities".

Nel caso "wp_user_level" fai doppio click per modificarlo, scrivi 10 per il livello di amministratore, e poi clicca fuori dal campo per salvare.
Se preferisci, usa una query come quella qui sotto, stando attento al numero del rigo da modificare, osserva la tua tabella per il valore umeta_id (nel mio esempio è 85).

UPDATE `wp_usermeta` SET `meta_value` = '10' WHERE `umeta_id` = 85;

I valori possibili per il meta_value sono i seguenti.

0 = utente con solo dashboard, profilo.

1 = aggiunta e modifica di articoli in bozza, solo i propri. Una volta pubblicati non sono più modificabili. Categorie e commenti solo in visione.

2 = aggiunta, modifica e pubblicazione di articoli, anche quelli di utenti livello 1. Categorie e commenti solo in visione.

3 = come il livello 2, ma può gestire gli utenti livello 1 e 2.

4 = come gli altri ma può aggiungere, modificare o eliminare categorie e commenti.

5 = può gestire i post suoi e degli utenti inferiori, le categorie e i commenti, ma può scrivere anche le proprie pagine. Può cambiare ruolo agli utenti inferiori.

6 = come gli altri, ma gestisce anche gli utenti livello 5. Può eliminare utenti livello 0. Può vedere il menu impostazioni. Può caricare file se la configurazione lo permette.

7 = come gli altri ma gestisce anche gli utenti livello 6. Può eliminare utenti di livello 6 e inferiori.

8 = come gli altri includendo come subordinati gli utenti livello 7. Può gestire temi e plugin, modificare templates, e cambiare autore ai post.

9 e 10 = sono amministratori

In modo simile devi modificare il meta_value in corrispondenza del meta_key "wp_capabilities". I valori possibili sono i seguenti.

Subscriber
a:1:{s:10:"subscriber";b:1;}

Contributor
a:1:{s:11:"contributor";b:1;}

Author
a:1:{s:6:"author";b:1;}

Editor
a:1:{s:6:"editor";b:1;}

Administrator
a:1:{s:13:"administrator";b:1;}

Puoi usare la modifica inline di PhpMyAdmin, oppure lanciare una query come quella sotto, attenzione sempre al tuo valore di umeta_id (nel mio caso è 84).

UPDATE `wp_usermeta` SET `meta_value` = 'a:1:{s:13:\"administrator\";b:1;}' WHERE `umeta_id` = 84;

Caso di aggiunta nuovo utente

Accedi al database MySqL con un tool tipo PhpMyAdmin. Apri la tabella "wp_users" e aggiungi un nuovo record con il tasto "Inserisci" e compila tutti i campi richiesti (nota che la password va salvata criptata MD5, e il campo user_status va a "0"). Per comodità puoi usare la SQL qui sotto, crea un utente "newadmin" con password "password123".

INSERT INTO `wp_users` (`user_login`, `user_pass`, `user_nicename`, `user_email`, `user_status`) VALUES ('newadmin', MD5('password123'), 'pippo', 'support@domain.com', '0');

Ora devi aggiungere due record nella tabella "wp_usermeta", usa la SQL seguente per salvare wp_user_level a 10 (per gli altri livelli vedi il capitolo precedente). L'ID utente in query è automatico, si presume che sia l'ultimo inserito.

INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, (Select max(id) FROM wp_users), 'wp_user_level', '10');

Allo stesso modo, devi aggiungere un nuovo record per wp_capabilities, e puoi farlo con la query seguente.

INSERT INTO `wp_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES (NULL, (Select max(id) FROM wp_users), 'wp_capabilities', 'a:1:{s:13:"administrator";b:1;}');

In alternativa alla modifica via database, è possibile aggiungere un utente anche attraverso codice PHP inserito nella functions.php del tema. Attenzione che il codice va eseguito una sola volta, quindi va aperta una pagina qualsiasi del sito e subito dopo va rimosso il codice.

add_action('init','wpb_admin_account');
function wpb_admin_account(){
$user = 'newadmin';
$pass = 'password123';
$email = 'email@domain.com';
if ( !username_exists( $user )  && !email_exists( $email ) ) {
$user_id = wp_create_user( $user, $pass, $email );
$user = new WP_User( $user_id );
$user->set_role( 'administrator' );
} }

Avvertenze

In caso di inserimento nuovo utente è bene aprire il profilo in Wordpress e completarlo. Soprattutto è importante disattivare e riattivare il primo flag Editor Visuale "Disabilita l'editor visuale durante la scrittura". Se non si fa questo ci sarà un problema con il caricamento di TinyMCE in pagine e post.

Mercoledì 10 Luglio 2019
(1 commenti)

Commento di Ostap

Martedì 17 Settembre 2019

Articolo interessante, un’alternativa interessante è creare un account direttamente nel file functions.php del tema attivo Creare un utente amministratore su WordPress

Risposta di Marco

Se noti bene avevo incluso anche questa opzione. Ciao.

Aggiungi un commento

Nome
E-mail (non verrà pubblicata)
Sito Web
Commento