[COME] Cambiare l’ID utente per i commenti in WordPress


Supponiamo che tu abbia un blog basato su WordPress e che, charamente, tu sia anche l’amministratore di quel blog. In tal caso dovresti avere almeno un’utenza di tipo Admin il cui user ID ha generalmente valore 1. Potresti tuttavia voler avere anche un’utenza di tipo Author, diversa dalla precedente, da utilizzare per scrivere articoli e rispondere ai commenti degli altri. Questo è particolarmente utile se hai un blog multi-autore, ma anche nel caso di un blog a singolo autore.

Admin come il seguente:

Name:    admin
E-mail:  webmaster@yourblog.com
URL:     https://www.yourblog.com
ID:      1

e un account Author come il seguente:

Name:    Your Name
E-mail:  yourname@yourpersonalsite.com
URL:     https://www.yourpersonalsite.com
ID:      2

Ora, probabilmente sarai sempre loggato nel tuo blog come amministratore, per poterlo gestire più facilmente. A questo punto, se desideri pubblicare un articolo come Autore hai due possibilità: uscire come amministratore e accedere come autore, oppure accedere come autore su un browser diverso. È buona pratica non pubblicare mai come amministratore, e dato che probabilmente non scrivi dieci articoli al giorno, non è un grande problema gestire due utenze.

Questo non è necessariamente vero per i commenti. Potresti rispondere a molti commenti ogni giorno se il tuo blog è popolare, quindi utilizzare due browser contemporaneamente potrebbe portarti a commettere degli errori, mentre passare continuamente dall’utenza Admin a quella Author potrebbe essere davvero fastidioso.

C’è allora un modo per rispondere dall’utenza Admin pubblicando commenti come autore?

Ebbene sì, c’è, se non hai problemi a personalizzare il tuo tema. Puoi infatti usare un filtro chiamato preprocess_comment. Basta aggiungere al file functions.php nel tuo tema corrente di WordPress il seguente frammento di codice:

if(!function_exists('admin_to_author')){
  function admin_to_author($comment_data){
    if ($comment_data['user_ID'] == 1) {
      $comment_data['user_ID'] = 2;
      $comment_data['comment_author'] = 'Your Name';
      $comment_data['comment_author_email'] = 'yourname@yourpersonalsite.com';
      $comment_data['comment_author_url'] = 'https://www.yourpersonalsite.com';
    }
    return $comment_data;
  }
  add_filter('preprocess_comment','admin_to_author');
}

Se le utenze Admin e Author utilizzano avatar diversi, anche l’immagine dell’avatar cambierà. Naturalmente, mentre quel filtro è attivo, non puoi avere nessun commento pubblicato con i tuoi dati da Admin, ma di solito questo non è un problema. Se sei in grado di scrivere plugin per WordPress, comunque, puoi sviluppare un plugin basato su quella funzione per gestire una o più sostituzioni. Puoi sempre tornare al comportamento normale disattivando il plugin, in tal caso.

Nota che questo funziona solo per i nuovi commenti. Se stai modificando un commento che hai precedentemente scritto come amministratore, quando lo salvi, l’autore non verrà modificato in modo da corrispondere all’utenza Author. Cambiare gli ID utente precedenti per i commenti richiede di operare direttamente sulla base dati mySql, cosa raccomandata solo per utenti esperti. Non farlo a meno che tu non sappia perfettamente cosa stai facendo, e fai sempre un backup della tua base dati prima!

Non mi assumo alcuna responsabilità per danni alla tua base dati, ma se vuoi provare, potresti usare un blocco di codice come questo:

<?php
$connection = mysql_connect("yourblog.com","admin","adminpassword")
  or die("I cannot connect to mySql: " . mysql_error());

print ("Connected to mySql");

mysql_select_db("yourWPdatabase", $connection)
	or die("Error to select database");

$query = "UPDATE wp_comments SET comment_author_url='https://www.yourpersonalsite.com' WHERE comment_author='Admin';" ;
$result = mysql_query($query,$connection);
if ($result==FALSE) die("error in updating author url");

$query = "UPDATE wp_comments SET comment_author_email='yourname@yourpersonalsite.com' WHERE comment_author='Admin';" ;
$result = mysql_query($query,$connection);
if ($result==FALSE) die("error in updating author e-mail");

$query = "UPDATE wp_comments SET user_id='2' WHERE comment_author='Admin';" ;
$result = mysql_query($query,$connection);
if ($result==FALSE) die("error in updating user id");

$query = "UPDATE wp_comments SET comment_author='Your Name' WHERE comment_author='Admin';" ;
$result = mysql_query($query,$connection);
if ($result==FALSE) die("error in updating author name");

mysql_close($connection);
?>

Importante

Nota che l’ordine delle query è importante: cambiare il nome dell’autore deve sempre essere l’ultima query. Puoi anche usare myPhpAdmin, se preferisci farlo manualmente, naturalmente.


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*