Come aggiungere un account a WordPress via FTP

Qualche tempo fa una cliente non riusciva più a entrare nel suo sito WordPress. La password era persa e il recupero non funzionava: l’email collegata all’account non esisteva più. Nessun problema, le ho detto: dammi l’accesso al database, si sistema in un minuto.

Il database però stava su un server separato, raggiungibile solo da alcuni indirizzi IP, e il vecchio fornitore non voleva saperne di dare l’accesso. Sembrava un vicolo cieco. Non lo era: avevamo l’accesso FTP, e tanto basta.

“Ma con l’FTP hai anche la password del database”

Vero: è scritta nel file wp-config.php. Ma la password non serve a niente se il database non ti lascia collegare. Quello della cliente accettava connessioni solo dai server del vecchio fornitore: da phpMyAdmin o dal mio computer la connessione veniva rifiutata prima ancora di controllare la password. Succede spesso anche sugli hosting condivisi, dove il database non è raggiungibile dall’esterno.

L’unico modo per arrivarci era far girare del codice sul server del sito, che il database accettava. Ed è esattamente quello che fa il file qui sotto: usa la connessione che WordPress ha già aperto, senza bisogno di conoscere la password.

L’idea

WordPress crea gli utenti con una sua funzione, wp_create_user(), la stessa che usa il pannello quando aggiungi un utente a mano. Se puoi mettere un file PHP nel sito, puoi chiamarla tu e crearti un amministratore nuovo. Da lì reimposti la password dell’account originale e cancelli tutto.

Come si fa

  1. Collegati al sito via FTP o dal file manager del pannello dell’hosting.
  2. Apri la cartella wp-content e, se non c’è, crea dentro la cartella mu-plugins.
  3. Crea al suo interno il file accesso-temporaneo.php con questo contenuto, cambiando nome utente, password ed email:
<?php
// Crea un amministratore temporaneo. CANCELLARE questo file appena entrati.
add_action( 'init', function () {
	$utente   = 'accesso-temporaneo';
	$password = 'una-password-lunga-e-mai-usata-altrove';
	$email    = 'il-tuo-indirizzo@tuodominio.it';
	if ( username_exists( $utente ) || email_exists( $email ) ) {
		return;
	}
	$id = wp_create_user( $utente, $password, $email );
	if ( ! is_wp_error( $id ) ) {
		( new WP_User( $id ) )->set_role( 'administrator' );
	}
} );
  1. Apri il sito una volta, così il codice viene eseguito, poi vai su tuosito.it/wp-admin ed entra con i dati che hai scritto.
  2. In Utenti, correggi l’email e reimposta la password dell’account originale.
  3. Cancella subito il file accesso-temporaneo.php, poi entra con l’account originale ed elimina anche l’utente temporaneo.

Perché un mu-plugin e non il functions.php

Molte guide dicono di incollare il codice nel file functions.php del tema. Funziona, ma è più rischioso: un errore di battitura in quel file può bloccare tutto il sito, e il codice resta sepolto in mezzo a quello del tema, dove è facile dimenticarlo. I file in mu-plugins invece partono da soli, senza bisogno di attivarli, e stanno in un file tutto loro: toglierlo è un attimo, e si vede subito se è rimasto.

Due avvertenze

  • Non lasciare il file sul server. Finché c’è, chiunque conosca quei dati può entrare nel sito da amministratore.
  • Usalo solo su siti di cui sei proprietario, o per conto del proprietario. Poter scrivere nei file di un sito vuol dire poterne prendere il controllo, ed è anche il motivo per cui l’accesso FTP va custodito come la password del pannello.

Se hai invece l’accesso al database, da phpMyAdmin basta correggere l’email dell’utente nella tabella wp_users e usare il normale “Password dimenticata”. E se hai l’accesso SSH, con WP-CLI è un comando solo: wp user update nomeutente --user_pass=nuovapassword.

Parliamone

Ti serve una mano con qualcosa di simile? Ergo, parliamone.

Raccontami cosa ti serve: ti rispondo io, di persona, di solito in giornata. Il primo confronto è gratuito e senza impegno.