Per creare un utente amministratore per il nostro sito di WordPress utilizzando solo il codice di programmazione (immaginiamo per esempio di aver dimenticato l’utente principale e non voler fare modifiche sul database, dove per altro sarebbe ancora più facile), è sufficiente procedere nella maniera seguente.
Apriamo il file functions.php che si trova nella cartella del tema, tipicamente in /wp-content/themes/
In fondo al file aggiungiamo il seguente pezzo di codice:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
add_action('init', 'aggiungi_nuovo_utente'); function aggiungi_nuovo_utente() { // i nostri dati di accesso $username = 'nostrousername'; $password = 'nostrapassword123'; $email = 'nostra@email.it'; // controlliamo se l'utente esiste $user_id = username_exists( $username ); // se l'utente non esiste aggiungiamolo if ( !$user_id and email_exists($user_email) == false ) { // creiamo il nuovo utente $user_id = wp_create_user( $username, $password, $email ); // prendiamo l'utente appena creato $user = get_user_by( 'id', $user_id ); // rimuoviamo il ruolo di sottoscrittore $user->remove_role( 'subscriber' ); // aggiungiamo il ruolo di amministratore $user->add_role( 'administrator' ); } } |
A questo punto eseguiamo una qualunque pagina del sito, per esempio la home page, ed il gioco è fatto. 🙂
Ciao,
Provato ad inserire il codice nel tema child, e caricando una qualsiasi pagina, l’utente non viene creato (uso WP ver. 5.2.3)…
Immagino tu abbia provato se lo script funziona…
Se non funziona come posso fare per fare un semplice debug?
Grazie!
Ciao Roberto, lo hai inserito nel file functions.php del tema child? Il tema child è attivo? Ti chiedo questo paio di banalità per escludere anzitutto errori semplici. Fammi sapere.
Ciao Petar,
Si, nel functions del tema child ed è attivo.
L’installazione wamp è in locale, ma non credo che questo possa influire…
Email e username che stai cercando di aggiungere non esistono già, vero?
Altrimenti prova a fare la seguente verifica:
Nel codice, subito dopo aver dichiarato la function aggiungi:
die("ook");
In questo modo:
function aggiungi_nuovo_utente() {
die("ook");
ecc ecc…
Se la funzione viene attivata correttamente non dovresti vedere il sito, ma un “ook” al suo posto.
Ciao di nuovo,
Email e username che ho inserito nello script non esistono nel DB del sito WP.
Ho provato anche ad inserire la riga che dicevi, ma non succede nulla, cioè viene visualizzata la pagina home del sito come al solito, senza nessuna scritta “ook”…
Quindi significa che lo script non viene caricato….
Ciao, se non ti blocca la home significa che il tema-child non è attivo correttamente e la pagina functions.php non viene caricata.
In caso contrario ti avrebbe bloccato l’esecuzione della home.
Puoi provare ad eseguire lo script nella pagina functions.php del tema principale.
Hai controllato se hai inserito anche la prima riga?
add_action('init', 'aggiungi_nuovo_utente');