WordPress.org

Make WordPress Core

Opened 4 years ago

Closed 3 years ago

#11159 closed defect (bug) (invalid)

WP_SITEURL and bloginfo('siteurl') inconsistent, or WP_SITEURL should be defined

Reported by: anmari Owned by:
Milestone: Priority: normal
Severity: minor Version:
Component: General Keywords: needs-patch WP_SITEURL constants
Focuses: 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)

comment:1 scribu4 years ago

  • Keywords needs-patch added
  • Milestone changed from Unassigned to Future Release

comment:2 anmari3 years ago

In wp 3.0.1 looks like default_constants.php should have :

if ( !defined('WP_SITEURL') )

define( 'WP_SITEURL', get_option('siteurl') );

either around line 40 or around line 71
to be consistent

comment:3 nacin3 years ago

  • 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.

Note: See TracTickets for help on using tickets.