messaliberty

about hulor and us

How to create a single wp-config file for local and remote WordPress development

If you are developing WordPress sites, themes or plugins, you probably know that setting up a local development environment can speed things up immensely. The easiest way is to use XAMPP or MAMP. I prefer XAMPP by the way as it is available on Windows, Mac OSX and Linux.  Installing XAMPP gets you most of the way to headache free WordPress development, the rest is setting up your local server/virtual servers so that it as closely mirrors your remote set-up as possible.

However, some settings like blog address are held in the database which makes mirroring local development and remote production servers a little tricky. If you just backed up the database on the remote set-up and imported it to your local XAMPP server through phpMyAdmin then WordPress will still think that it is at http://www.wordpressblog.com and not http://localhost

Permalinks might not work, plugins might break and so on.

What you need to do is either edit the database, searching and replacing the relevant fields or edit the wp-config.php file to override the database settings. I don’t recommend the first option as it is error-prone and you have to do it again if you throw the database in the opposite direction.

Editing the wp-config.php file is relatively easy, just add the lines

	define('WP_SITEURL', "http://localhost");
	define('WP_HOME', "http://localhost");

but if you edit the wp-config.php file you will have two different versions of the file.  This will cause your site to break if you absent-mindedly uploaded your local wp-config.php to the remote server.  If you are using source control, like git or svn, and forget to exclude the file the same thing happens.  Plus you have to maintain two versions.

Here’s what I do. I set-up the wp-config.php to check to see if it is a local server, if it is then set the configuration one way, otherwise set it using the production values.

The first 3 settings are the same whether local or remote.  In some cases the MySQL hostname will be different, so just set it later with the others.

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'wordpressdb');

/** MySQL database username */
define('DB_USER', 'wpdbuser');

/** MySQL hostname */
define('DB_HOST', 'localhost');

We’ve moved the 4th setting, the password, because it is different. And we will add the ‘WP_SITEURL’ and ‘WP_HOME’ settings later to override the database values. But first two more settings that are the same whether local or remote.

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

Ok, now the fun starts. These five lines checks to see if the server’s address is 127.0.0.1 If it is, we assume it is a local machine and set a WP_ENV to development, otherwise we set it to production.

if ($_SERVER['REMOTE_ADDR']=='127.0.0.1') {
	define('WP_ENV', 'development');
} else {
	define('WP_ENV', 'production');
}

Having determined whether the environment is local or remote, we then grab the site address for use with ‘WP_SITEURL’ and ‘WP_HOME’.  I don’t hardcode it in as it gives me the flexibility to re-use it for any virtual server.

$debian_server  = preg_replace ('/:.*/',"", $_SERVER['HTTP_HOST']); $_SERVER['HTTP_HOST']);

Finally in these lines, if it is the local development, we set a simple dummy password and disable post revisions. We also set WP_DEBUG to false, this allows us to set it to true if we come across any tricky problems.

If it is the real production server then we set the password to its original value which should be a long and random set of characters.

if ( WP_ENV == 'development' ) {
	define('DB_PASSWORD', 'short_dummy_password');

	define ('WP_POST_REVISIONS', false);
	define ('WP_DEBUG', false);

	define('WP_SITEURL', "http://$debian_server");
	define('WP_HOME', "http://$debian_server");
} elseif ( WP_ENV == 'production' ) {
	define('DB_PASSWORD', 'the_real_password_which_is_a_very_long_and_random_string');
}

This wp-config.php file is now safe to be used on the remote production server or on your local development server.

One note, we didn’t set the WP_SITEURL and WP_HOME on the production server instead using the values in the database.  But if we moved a site from one domain to another we could do so.

If you have any questions, feel free to ask me in the comments.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Tumblr
  • Yahoo! Buzz
  • Twitter

Google Japan’s marketing campaign at Tully’s Coffee But Wait!

Google at Tullys

Google at Tully's

Like we discussed at recent episodes of messa.tv, Google is trying to become #1 player of Japanese search engine market. To achieve the aim, Google is spending huge amount of money for marketing campaigns on TV and anywhere around us.

Even here at Tully’s Coffee which is one of Starbucks clones in Japan, I found a small card by Google. It says “Connect to Free Wi-Fi here to see Google’s Search Story”. Sounds nice because it’s quite hard to find free Wi-Fi spots in Japan but don’t have excessive expectations for this campaign. ONLY 30min a day you can use it!

Partner companies of this campaign are Wi-Fi provider NTT and cafes like Tully’s. I know they don’t want to open the Wi-Fi for a long time but the only 30min limit gives me a negative impression. I’m always thinking that Google can give us deep impressions all the time.

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Tumblr
  • Yahoo! Buzz
  • Twitter

5 ways to do without a mouse

I like to use keyboard shortcuts as I am usually using a laptop.

So it’s convenient to set  up a mouse-less environment.
I know many people use [Ctrl+P][Ctrl+C][Ctrl+V] and so on.
Some people uses 「Alt+Tab」「Ctrl+Tab」「Windows button+D」as well.

Today I want to show you 5 ways to set-up a mouse-less environment that aren’t as well known.

  1. Go to top-right search box(when browsing like Firefox, IE)
  2. Go to address area (when browsing like Firefox, IE)
  3. Call up the right mouse menu without mouse
  4. Make scrolling smoother
  5. Enable clicking links with keyboard

Read the rest of this entry »

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Tumblr
  • Yahoo! Buzz
  • Twitter

messa.tv JP Starts Soon!

We’ll launch a Japanese version of the tech podcast messa.tv soon.

messa.tv has been published since April 2006, and then became an English program since beginning of 2009. But finally we’ll re-start the Japanese show!

The Japanese version of messa.tv might help you if you’re interested in Japanese tech trends, culture and business. Or if you’re studying Japanese, you can watch and learn real live Japanese!

Now our English show have lots of visitors from all around the world and a few days ago we got a guest from Greece. He said he is a fan of our show!

Chris from Greece visit us

Chris from Greece visit us


Chris came from Greece to Osaka Japan to see us. Thank you so much Chris!

Anyway, we’re always welcome to your feedbacks or comments on our blogs, Twitter.

See you at the show soon!

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Tumblr
  • Yahoo! Buzz
  • Twitter

Use curvyCorners to make rounded corners

We use a JavaScript library called “curvyCorners” for our own sites.

curvycorners

curvycorners

This one can show beautiful rounded corners but can be a bit heavy to load each time. I’m planning to replace it with a lighter and faster one but let me describe how to use “curvyCorners”.

1. Download it form here and load it at a header area of HTML files like this:
Read the rest of this entry »

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • email
  • Reddit
  • StumbleUpon
  • Technorati
  • MySpace
  • Tumblr
  • Yahoo! Buzz
  • Twitter
Get Adobe Flash playerPlugin by wpburn.com wordpress themes