6

Is it really neccessary to put WP_HOME, WP_SITEURL in wp-config.php or set these settings via admin panel every time when moving a WordPress instance to another url (for example: moving from dev environment to production)? Is there any better strategy?

6 Answers 6

4

Those parameters and admin settings change the URLs in the database. The only other way to do that is run SQL queries on the DB in phpmyadmin to change them:

UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');

UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');

UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

Update 1/16/2015: it's much better to use a script that deals with serialized data, such as interconnectit.com WordPress Serialized PHP Search Replace Tool

Update 9/15/2023 Even better to use WP CLI: https://developer.wordpress.org/cli/commands/search-replace/

4
  • 3
    You should be careful with this approach because some plugins store serialized arrays in wp_options (like ContactForm7) and a brute replace (unless both domains have the exact same number of characters) may brake the plugin configuration.
    – MZAweb
    Commented May 9, 2011 at 17:48
  • These queries correctly find/replace in serialized data and don't break the plugin or the data. Commented Apr 24, 2012 at 14:49
  • Not if you have a serialized array in a meta_value in wp_postmeta, and that array contains the site url (if old and new urls have different str_len, of course)
    – MZAweb
    Commented Apr 24, 2012 at 21:07
  • @MZAweb: You're right, my mistake; update added. Commented Jan 16, 2015 at 14:28
2

What I do here is I keep an entry in my /etc/hosts file pointing the site domain to 127.0.0.1. Most of the time the line is commented so my machine points to the production site, and when I'm developing something I just uncomment the line and the domain will point to my dev box.

I know it's kinda ugly, but since Wordpress puts the domain in a lot of fields in the database (especially if you need to work with real data in your development environment), it's the fastest method I could come up with.

2

When you move from one server to another the problem could be URLs that WP serialized in DB. To do a safe search and replace you can use this tool search replace db.

Is very simple, follow the instructions and remember to remove the script when done.

0

You could put those settings in an external file and exclude it from your publishing process.

0

I don't mess with core files, I just move the themes and plugins around instead. I develop locally and zip the themes and plugins for production. I have about ten WordPress installs most internal and this has worked well for me so far.

I also, don't move much data around so this answer may not help you. There are some pretty extensive free plugins for backing up data and restoring.

0

Use on the top of your functions.php: update_option('siteurl','http://yoursite.com'); update_option('home','http://yoursite.com');

Navgigate through your site a bit, login the backend en remove these lines.

This should be sufficient.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.