WordPress: Change Author ID / Attribution On All Posts In a Single Pass

I can access my MySQL database using the command line option provided by vps provider. How do I change author ID or attribution on all wordpress blog posts in a single pass?

First, backup your wordpress database, enter:

mysqldump -u user -p blog-db-name-here > /path/to/backup/dir/blog.db.sql
WARNING! These examples may crash your blog or database if not executed with care. Make a backup – it cannot be stressed enough how important it is to make a backup of your files and mysql database before you do this.

Type the following shell command to connect to your blog database:

mysql -u user -p blog-db-name-here

OR

mysql -u user -h server.ip.here -p blog-db-name-here

Sample outputs:

Enter password: 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A


Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 15275063
Server version: 5.1.61-log Source distribution


Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.


Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

Type the following command to list all authors IDs at mysql> prompt:

mysql> SELECT ID, display_name FROM wp_users;

Sample outputs:

+----+--------------+
| ID | display_name |
+----+--------------+
|  1 | SXI ADMIN   |
|  2 | nixcraft     |
+----+--------------+
2 rows in set (0.04 sec)

In this output, I’ve two ID of the user. I’d like to change ID #2 (nixcraft) to ID #1 (SXI ADMIN). In other words set post author to ID#1 for all posts where post author ID already set to ID#2. Type the following MySQL command:

mysql> UPDATE wp_posts SET post_author='1' WHERE post_author='2';

Sample outputs:

Query OK, 110 rows affected (0.13 sec)
Rows matched: 110  Changed: 110  Warnings: 0

Quit the mysql, enter:

mysql> quit

You need to flush cached post by visiting your wp-content/cache/ directory and delete all the files. If you are using memcached type the following command to flush memcahed cache:

echo "flush_all" | nc 192.168.1.2 11211

Posted by: SXI ADMIN

The author is the creator of SXI LLC and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.