wp search-replace on Gravity Forms tables

TIL, that if you run wp search-replace old@email.com new@email.com it won’t actually change all instances in your database. In my case it specifically didn’t change the Gravity Forms notification email to new@email.com.

When Gravity Forms creates it’s tables using the {$wpdb-prefx}_rg_{table_name} format it doesn’t also register those tables with the $wpdb database object thus WordPress doesn’t know about the tables and then wp search-replace won’t find the entries.

To get wp search-replace to search and replace all instances in all tables even if it doesn’t officially know about them use the --all-tables-with-prefix argument.

wp search-replace old@email.com new@email.com --all-tables-with-prefix

This could introduce another issue though, if you have a user with old@email.com as their username it will also be change to new@email.com so to skip all user tables use the command below.

wp search-replace old@email.com new@email.com --all-tables-with-prefix --skip-tables=wp_user*

Always make sure that you use the --dry-run flag first to make it do the search without the replace so you have some idea what’s happening.

You can find the documentation here for wp search-replace.

It’s also worth remembering that the search and replace is case sensitive. Today I had an email that was spelled in camelCase old@emailDomain.com which did not get changed when I searched old@emaildomain.com.

Leave a Reply

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