I performed a MySQL dump of my WordPress production database to be imported into my local development environment. I plan on frequently performing this database dump and import. Is it possible for me to AVOID running a search & replace script or a MySQL query that updates all of the permalinks, site URLs, etc?
Could I include something like the following in my wp-config.php to override the above said links:
define('WP_HOME', 'http://localhost.com:8888/example');
define('WP_SITEURL', 'http://localhost:8888/example');
My goal is to make it as EASY as possible to perform routine database dumps from my production site to local.
What you posted will work fine for all links that are generated by WordPress: permalinks, script/style enqueues for local files, featured images, etc.
I tend to define my Site URL and Home URL dynamically like this:
Note: HTTP_HOST isn’t always present, use with caution
As far as in content, links and urls — things like links to other posts or links to images, those will not get changed as they are just in the database, not generated dynamically. You can probably do some
preg_replace
magic with thethe_content
filter, however.That said, the important things are the stuff WP generates, I wouldn’t worry too much about in content links/images on your local machine.
Naive search and replace is simply not good enough, as part of the data in the DB (widgets for example) is serialized and in order to replace text in a serialized data you first have to unserialize it.
The best thing you can do is to fully duplicate the production enviroment on your development server which should include at the minimum changing your hosts file to point to production domain to your testing server IP address. Once you set this up, keeping your source files and DB in sync should give you a good development environment.