Opened 4 years ago
Closed 2 years ago
#11159 closed defect (bug) (invalid)
WP_SITEURL and bloginfo('siteurl') inconsistent, or WP_SITEURL should be defined
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | General | Version: | |
| Severity: | minor | Keywords: | needs-patch WP_SITEURL constants |
| Cc: |
Description
The wordpress directory constant WP_SITEURL remains undefined if not defined in wp-config.php , although other constants referred to in http://codex.wordpress.org/Editing_wp-config.php do get defined in wp-settings.php. See from around line 109 and lines 228, 362, 370 etc onwards.
get_bloginfo('siteurl') defaults to get_bloginfo('home'). If a developer uses get_bloginfo('siteurl') and the wp install has wp_siteurl defined in the config file - the "wrong" url is returned from what the developer expects.
So while a developer can use other constants, they cannot reliably use WP_SITEURL. They must check for definition of WP_SITEURL and define WP_SITEURL themselves using 'wp_url', not 'siteurl', as that gives same as 'home', or always use bloginfo('wp-url') - slower.
See: general-template.php (in 2.9) lines 303 on has:
case 'url' :
case 'home' : DEPRECATED
case 'siteurl' : DEPRECATED
$output = get_option('home');
break;
case 'wpurl' :
$output = get_option('siteurl');
break;
Surely
1) bloginfo('siteurl') even if deprecated, should call option('siteurl'), as per bloginfo('wp_url'), not 'home'
OR
2) WP_SITEURL (or WP_WPURL!!) should be defined in wp-settings if not defined in config
Change History (3)
- Keywords needs-patch WP_SITEURL added; WP_SITEURL, removed
- Milestone changed from Unassigned to Future Release
- Milestone Future Release deleted
- Resolution set to invalid
- Status changed from new to closed
WP_SITEURL and WP_HOME are short-circuit constants. By default they should not be defined, there's no reason to define them. They should NOT be used directly.
When defined, these trigger a filter on pre_option_home and pre_option_siteurl, to then force get_option() to return the constant's value.

In wp 3.0.1 looks like default_constants.php should have :
if ( !defined('WP_SITEURL') )
either around line 40 or around line 71
to be consistent