[wp-hackers] siteurl and home variables / constants

Joost de Valk joost at yoast.com
Mon Mar 30 08:29:01 GMT 2009


I was looking at the code for site_url in 
/wp-includes/link-template.php, and saw that it /always/ does a 
get_option('siteurl'), even when, as on my site, WP_SITEURL is defined 
in wp-config.php. The same goes for get_bloginfo in 
/wp-includes/general-template.php, for both WP_SITEURL and WP_HOME.

Wouldn't it be good to check for that before doing the get_option, to 
save a query or two on each page load?

It would be quite easy to make those functions use check for the defined 
constants before doing a database call.

A quick plugin I cooked[1] up that does this by using the pre_option_* 
hook, showed me that this would save quite a number of calls (though of 
course after the two first calls, these would be cached). The only 
"issue" I encountered was that in functions.php's is_blog_installed 
function, a db query is done to check whether a blog is installed, and 
the query that's done is, you've guessed it, retrieving the siteurl...

Anyway, I think some performance improvement could be made by adding in 
a check for the defined constants, but maybe I'm missing something?


[1] The source for that plugin is very simple:

function checkwp_config_siteurl() {
     if ( defined( 'WP_SITEURL' ) ) {
         // error_log("Prevented get_option");
         return WP_SITEURL;
     return false;

function checkwp_config_home() {
     if ( defined( 'WP_HOME' ) ) {
         // error_log("Prevented get_option");
         return WP_HOME;
     return false;

me *Joost de Valk*
Online Marketing, WordPress, SEO & Social Media Strategy
OrangeValley <http://www.orangevalley.nl> & Yoast <http://yoast.com>
E: joost at orangevalley.nl <mailto:joost at orangevalley.nl> - 
joost at yoast.com <mailto:joost at yoast.com>
T: +316-24-555-808 | @yoast <http://twitter.com/yoast> on Twitter

More information about the wp-hackers mailing list