5 Ways To Edit Multiple WordPress Posts Using Search And Replace

WordPress is the dominant Content Management System (CMS) and it’s estimated around 25% of all websites on the internet are built using it. The good thing about WordPress is the ease at which almost anyone can setup and administer their own blog without needing to have knowledge of HTML, JavaScript or CSS etc. With the thousands of themes and plugins available you can edit and modify your blog as much or as little as you wish.

When there are hundreds or thousands of posts and comments on a blog it becomes more difficult to manage because you might need to make changes to several posts at once. For example, you might transfer images to a dedicated CDN server to serve images quicker. This means all the links in your posts showing images will need replacing with the new URL. Or you might have tried loads of plugins and redundant data has been left behind in the posts as a side effect.

By default WordPress cannot bulk edit the content of multiple posts at once so another way is needed to do it. Here we have 5 different methods for you to try out.

1. Search and Replace WordPress Plugin

There are several WordPress plugins that enable you to perform a search and replace on text within most areas of your blog. The Search & Replace plugin has been chosen here because it’s got enough features for general use, is popular, easy to use and receives periodic updates.

1. Download the Search & Replace plugin, unzip and upload it to the wp-content/plugins folder on your server. Alternatively install directly from WordPress (Plugins > Add New > search for Search & Replace > Install Now > Activate Plugin).

2. In the admin sidebar go to Tools > Search & Replace. Enter the search string and replace string (can be left blank for deleting) then select only the wp_posts table in the list.

search and replace plugin

3. Click the Do Search & Replace button. As the Dry Run box is ticked by default it will only search and show what the changes will look like. At the top you will get a result box saying what was found and what would be changed in a real replace. Click “View details” to see a before and after window.

search and replace result

4. When you’re happy with everything untick the Dry Run box and select to save changes to the database and press the Do button. If you have no prior backups exporting to SQL file with changes first would be a safer option.

The good thing about Search & Replace is it gives the ability to backup and import the SQL database as well as helping with migrating from one domain to another.

Note: If the search function of Search & Replace isn’t quite powerful enough, another plugin we have talked about before called Search Regex might be worth a try. It includes powerful regex search options to finely tune your search terms. Sadly it hasn’t been updated for a while and other functions like searching titles, excerpts and post URLs no longer work, post content searching and replacing does still work though. Make sure you have database backups before trying it.


2. Database Search and Replace PHP Script

This works by using a PHP script that you upload to your server and then make search and replace modifications to the SQL database. It’s more user friendly than going through phpMyAdmin while still offering enough power for most users.

1. Download Search Replace DB and extract the Zip file. Enter the Search-Replace-DB-master folder to find another with the same name. Optionally rename it for security purposes.

2. Upload that folder to your server and place in the same location as wp-admin, wp-content etc. In your browser navigate to the folder, e.g. mysite.com/blog/Search-Replace-DB-master.

upload search replace DB folder

3. Once loaded check the script has automatically found the WordPress database. If not you will need to manually supply the details. The search and replace boxes are self explanatory with the additional option of Regex for advanced users.

search replace db options

4. In Tables choose “select tables“, scroll down the list, find the wp_posts table and highlight it.

search replace db table select

5. Now you are ready to test or apply the changes. Click Dry Run to perform a search to see how many occurrences are found and what will be changed if the replace is executed for real. When you are happy click Live Run to commit the changes to the database.

Once you’re finished with Search Replace DB click the Delete button to remove it and secure the server.


3. Simple Find and Replace With phpMyAdmin

People with access to the WordPress SQL database can edit multiple posts directly from phpMyAdmin quite easily. This can be risky if you are not familiar with phpMyAdmin so less experienced users should consider this as a last resort for use only if you’re having issues with easier methods. As always when editing the database, adequate backups are recommended.

1. Connect to phpMyAdmin through your host, such as cPanel etc. Click on the WordPress blog database in the database list.

select wordpress database in phpmyadmin

2. In the table list find and click on the wp_posts table and then the Search button at the top in the main window. Press the Find and Replace button just below.

wp_posts find and replace

3. The Find and Replace window is pretty straightforward, enter the string to search for and the string to replace it with, a regular expression option is available for more advanced usage. The drop down menu defaults to searching post content but can be changed to post titles or post excerpts etc. Clicking Go will begin the search through the posts in the database.

find and replace post text

4. If anything has been found a preview of the affected articles will show with the original text on the left and what the changes will look like on the right. Click Replace if you are happy with the changes.

You cannot delete text using this method and must supply a replace with string, a solution to that is the more advanced manual search and replace below.


4. Manual Find and Replace With phpMyAdmin

The simple find and replace above is merely a frontend for manual SQL queries but you can enter these commands manually if you wish although discretion is advised as this method is potentially a bit more dangerous.

1. Connect to phpMyAdmin and select the WordPress database in the list. Click SQL at the top in the main window.

2. The SQL query window allows you to enter all kinds of different queries, a search and replace on blog post content is relatively simple:

UPDATE wp_posts SET post_content = REPLACE (post_content, ‘search for’, ‘replace with’);

The same query has been cleaned up below and made easier to read using the Format button.

manual replace post content

3. Once you are sure your query is correct press the Go button. Note this does not offer a preview like the simpler find and replace and the action is immediately applied to the database.

An advantage with this method is you can use it to remove text, enter a blank string for replace with:

UPDATE wp_posts SET post_content = REPLACE (post_content, ‘deletethis’, ”);

Although we won’t go into it here you can use more advanced queries to find what you are looking for, such as the LIKE command to search for similar terms and replace other post content such as titles or excerpts. The MySQL manual has lots more information on the subject.


5. SQL Queries From a WordPress Plugin

If you want to edit the database post content using the the same SQL queries as above but don’t have access to phpMyAdmin, there is a WordPress plugin available called SQL Executioner that allows you to do this.

1. Download SQL Executioner, extract and upload to the plugins folder on your server or install it directly from WordPress admin (Plugins > Add New > search for SQL Executioner > Install Now > Activate).

2. In the admin sidebar go to Tools > SQL Executioner, enter your chosen SQL query into the textbox and press Execute SQL to run the query.

search and replace with sql executioner

The command is executed immediately and is irreversible, so make sure you type it in correctly and have adequate backups just in case.

Tip: If your posts table does not have the standard name of wp_posts you can find what it’s called by clicking on $posts and looking at Raw query just below Results.

4 Comments - Write a Comment

  1. realmag777 5 years ago
  2. Sameer Manas 13 years ago
  3. Jyo 13 years ago
  4. Yohan Perera 13 years ago

Leave a Reply

Your email address will not be published. Required fields are marked *

Note: Your comment is subject to approval. Read our Terms of Use. If you are seeking additional information on this article, please contact us directly.