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

Attenzione: questo articolo è disponibile in lingua italiana solo tramite traduzione automatica (Google Translate). Premete il pulsante qui sotto per attivare la traduzione. Tenete presente che una traduzione automatica è tutt'altro che perfetta.

Let us suppose that you have a blog based on WordPress and that you are also the administrator of that blog, of course. In such a case you should have at least an Admin account whose user ID value is generally set to 1. However, you may want to have also an Author account, different from the previous one, used to write posts and reply to else’s comments. This is particularly useful if you have a multi-author blog, but also in case of a single author blog.

So, let’s say that you have an Admin account as such:

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

and an Author account as such:

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

Now, you probably are always logged in your blog as administrator, to manage it. If you wish to publish an article as Author you have two possibilities: logout as administrator and log in as author, or login as author on a different browser. It is good practice not to publish as administrator, and since you probably do not write ten articles per day, it is not a major problem to manage two accounts.

This is not necessarily true for comments. You may reply to many comments every day if your blog is popular, so that using two browsers continuously may be confusing whereas switching continuously from Admin to the Author account could be really annoying. Is there a way to reply from the Admin account publishing comments as author?

Yes, there is, if you have no problems to customize your theme. You can use a filter called preprocess_comment. Just add to functions.php in your current WordPress theme the following code snippet:

  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;

If the Admin and the Author accounts are using different avatars, the avatar image will change too. Of course, while that filter is active, you cannot have any comment published with your Admin data, but this is not a problem, usually. If you are able to write WordPress plugins, anyway, you can develop a plugin based on that function to manage one or more substitutions. You can always reset to normal behavior by deactivating the plugin, in such a case.

Please, note that this works only for new comments. If you are editing a comment that you previously wrote as administrator, when you save it the author will not change to match the author account. Changing previous user IDs for comments requires to operate directly on the mySql database, which is recommended only for advanced users. Do not do it unless you perfectly know what you are doing, and always backup your database before!

I do not take any responsibility for damages to your database, but if you want to try, you might use a piece of code like this one:

$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");


Please, note that the order of queries is important: changing the author’s name must always be the last query. You can also use myPhpAdmin, if you prefer to do it manually, of course.

Si prega di usare Facebook solo per commenti brevi.
Per commenti più lunghi è preferibile utilizzare l'area di testo in fondo alla pagina.

Commenti Facebook

Lascia una risposta

Nel rispetto delle apposite norme di legge si dichiara che questo sito non ha alcun scopo di lucro, non ha una periodicità prestabilita e non viene aggiornato secondo alcuna scadenza prefissata. Pertanto non può essere considerato un prodotto editoriale ai sensi della legge italiana n. 62 del 7 marzo 2001. Inoltre questo sito si avvale del diritto di citazione a scopo accademico e di critica previsto dall'Articolo 10 della Convenzione di Berna sul diritto d'autore.