wp-settings.php 9.76 KB
Newer Older
godog's avatar
godog committed
1 2 3 4 5 6 7
<?php
/**
 * Used to set up and fix common variables and include
 * the WordPress procedural and class library.
 *
 * Allows for some configuration in wp-config.php (see default-constants.php)
 *
shammash's avatar
shammash committed
8 9
 * @internal This file must be parsable by PHP4.
 *
godog's avatar
godog committed
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
 * @package WordPress
 */

/**
 * Stores the location of the WordPress directory of functions, classes, and core content.
 *
 * @since 1.0.0
 */
define( 'WPINC', 'wp-includes' );

// Include files required for initialization.
require( ABSPATH . WPINC . '/load.php' );
require( ABSPATH . WPINC . '/default-constants.php' );
require( ABSPATH . WPINC . '/version.php' );

shammash's avatar
shammash committed
25
// Set initial default constants including WP_MEMORY_LIMIT, WP_MAX_MEMORY_LIMIT, WP_DEBUG, WP_CONTENT_DIR and WP_CACHE.
lechuck's avatar
lechuck committed
26
wp_initial_constants();
godog's avatar
godog committed
27

shammash's avatar
shammash committed
28 29 30
// Check for the required PHP version and for the MySQL extension or a database drop-in.
wp_check_php_mysql_versions();

godog's avatar
godog committed
31
// Disable magic quotes at runtime. Magic quotes are added using wpdb later in wp-settings.php.
root's avatar
root committed
32 33
@ini_set( 'magic_quotes_runtime', 0 );
@ini_set( 'magic_quotes_sybase',  0 );
godog's avatar
godog committed
34

lechuck's avatar
lechuck committed
35 36
// WordPress calculates offsets from UTC.
date_default_timezone_set( 'UTC' );
godog's avatar
godog committed
37 38 39 40 41 42 43

// Turn register_globals off.
wp_unregister_GLOBALS();

// Standardize $_SERVER variables across setups.
wp_fix_server_vars();

shammash's avatar
shammash committed
44
// Check if we have received a request due to missing favicon.ico
godog's avatar
godog committed
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
wp_favicon_request();

// Check if we're in maintenance mode.
wp_maintenance();

// Start loading timer.
timer_start();

// Check if we're in WP_DEBUG mode.
wp_debug_mode();

// For an advanced caching plugin to use. Uses a static drop-in because you would only want one.
if ( WP_CACHE )
	WP_DEBUG ? include( WP_CONTENT_DIR . '/advanced-cache.php' ) : @include( WP_CONTENT_DIR . '/advanced-cache.php' );

// Define WP_LANG_DIR if not set.
wp_set_lang_dir();

// Load early WordPress files.
require( ABSPATH . WPINC . '/compat.php' );
require( ABSPATH . WPINC . '/functions.php' );
root's avatar
root committed
66 67 68
require( ABSPATH . WPINC . '/class-wp.php' );
require( ABSPATH . WPINC . '/class-wp-error.php' );
require( ABSPATH . WPINC . '/plugin.php' );
lechuck's avatar
lechuck committed
69
require( ABSPATH . WPINC . '/pomo/mo.php' );
godog's avatar
godog committed
70

root's avatar
root committed
71
// Include the wpdb class and, if present, a db.php database drop-in.
godog's avatar
godog committed
72 73 74
require_wp_db();

// Set the database table prefix and the format specifiers for database table columns.
root's avatar
root committed
75
$GLOBALS['table_prefix'] = $table_prefix;
godog's avatar
godog committed
76 77 78 79 80
wp_set_wpdb_vars();

// Start the WordPress object cache, or an external object cache if the drop-in is present.
wp_start_object_cache();

lechuck's avatar
lechuck committed
81
// Attach the default filters.
godog's avatar
godog committed
82 83 84 85 86 87 88 89 90 91
require( ABSPATH . WPINC . '/default-filters.php' );

// Initialize multisite if enabled.
if ( is_multisite() ) {
	require( ABSPATH . WPINC . '/ms-blogs.php' );
	require( ABSPATH . WPINC . '/ms-settings.php' );
} elseif ( ! defined( 'MULTISITE' ) ) {
	define( 'MULTISITE', false );
}

root's avatar
root committed
92 93
register_shutdown_function( 'shutdown_action_hook' );

godog's avatar
godog committed
94 95 96 97
// Stop most of WordPress from being loaded if we just want the basics.
if ( SHORTINIT )
	return false;

lechuck's avatar
lechuck committed
98 99
// Load the L10n library.
require_once( ABSPATH . WPINC . '/l10n.php' );
godog's avatar
godog committed
100 101 102 103 104

// Run the installer if WordPress is not installed.
wp_not_installed();

// Load most of WordPress.
root's avatar
root committed
105 106
require( ABSPATH . WPINC . '/class-wp-walker.php' );
require( ABSPATH . WPINC . '/class-wp-ajax-response.php' );
godog's avatar
godog committed
107 108 109 110
require( ABSPATH . WPINC . '/formatting.php' );
require( ABSPATH . WPINC . '/capabilities.php' );
require( ABSPATH . WPINC . '/query.php' );
require( ABSPATH . WPINC . '/theme.php' );
lechuck's avatar
lechuck committed
111 112
require( ABSPATH . WPINC . '/class-wp-theme.php' );
require( ABSPATH . WPINC . '/template.php' );
godog's avatar
godog committed
113 114 115 116 117 118 119
require( ABSPATH . WPINC . '/user.php' );
require( ABSPATH . WPINC . '/meta.php' );
require( ABSPATH . WPINC . '/general-template.php' );
require( ABSPATH . WPINC . '/link-template.php' );
require( ABSPATH . WPINC . '/author-template.php' );
require( ABSPATH . WPINC . '/post.php' );
require( ABSPATH . WPINC . '/post-template.php' );
lechuck's avatar
lechuck committed
120 121
require( ABSPATH . WPINC . '/revision.php' );
require( ABSPATH . WPINC . '/post-formats.php' );
lechuck's avatar
lechuck committed
122
require( ABSPATH . WPINC . '/post-thumbnail-template.php' );
godog's avatar
godog committed
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
require( ABSPATH . WPINC . '/category.php' );
require( ABSPATH . WPINC . '/category-template.php' );
require( ABSPATH . WPINC . '/comment.php' );
require( ABSPATH . WPINC . '/comment-template.php' );
require( ABSPATH . WPINC . '/rewrite.php' );
require( ABSPATH . WPINC . '/feed.php' );
require( ABSPATH . WPINC . '/bookmark.php' );
require( ABSPATH . WPINC . '/bookmark-template.php' );
require( ABSPATH . WPINC . '/kses.php' );
require( ABSPATH . WPINC . '/cron.php' );
require( ABSPATH . WPINC . '/deprecated.php' );
require( ABSPATH . WPINC . '/script-loader.php' );
require( ABSPATH . WPINC . '/taxonomy.php' );
require( ABSPATH . WPINC . '/update.php' );
require( ABSPATH . WPINC . '/canonical.php' );
require( ABSPATH . WPINC . '/shortcodes.php' );
lechuck's avatar
lechuck committed
139
require( ABSPATH . WPINC . '/class-wp-embed.php' );
godog's avatar
godog committed
140 141 142 143 144 145
require( ABSPATH . WPINC . '/media.php' );
require( ABSPATH . WPINC . '/http.php' );
require( ABSPATH . WPINC . '/class-http.php' );
require( ABSPATH . WPINC . '/widgets.php' );
require( ABSPATH . WPINC . '/nav-menu.php' );
require( ABSPATH . WPINC . '/nav-menu-template.php' );
root's avatar
root committed
146
require( ABSPATH . WPINC . '/admin-bar.php' );
godog's avatar
godog committed
147 148 149 150 151 152 153 154 155 156

// Load multisite-specific files.
if ( is_multisite() ) {
	require( ABSPATH . WPINC . '/ms-functions.php' );
	require( ABSPATH . WPINC . '/ms-default-filters.php' );
	require( ABSPATH . WPINC . '/ms-deprecated.php' );
}

// Define constants that rely on the API to obtain the default value.
// Define must-use plugin directory constants, which may be overridden in the sunrise.php drop-in.
lechuck's avatar
lechuck committed
157
wp_plugin_directory_constants();
godog's avatar
godog committed
158 159 160 161 162 163 164

// Load must-use plugins.
foreach ( wp_get_mu_plugins() as $mu_plugin ) {
	include_once( $mu_plugin );
}
unset( $mu_plugin );

root's avatar
root committed
165 166 167 168 169 170 171 172
// Load network activated plugins.
if ( is_multisite() ) {
	foreach( wp_get_active_network_plugins() as $network_plugin ) {
		include_once( $network_plugin );
	}
	unset( $network_plugin );
}

godog's avatar
godog committed
173 174 175 176 177 178
do_action( 'muplugins_loaded' );

if ( is_multisite() )
	ms_cookie_constants(  );

// Define constants after multisite is loaded. Cookie-related constants may be overridden in ms_network_cookies().
lechuck's avatar
lechuck committed
179
wp_cookie_constants();
godog's avatar
godog committed
180 181

// Define and enforce our SSL constants
lechuck's avatar
lechuck committed
182
wp_ssl_constants();
godog's avatar
godog committed
183 184 185 186 187 188 189 190 191

// Create common globals.
require( ABSPATH . WPINC . '/vars.php' );

// Make taxonomies and posts available to plugins and themes.
// @plugin authors: warning: these get registered again on the init hook.
create_initial_taxonomies();
create_initial_post_types();

root's avatar
root committed
192 193 194
// Register the default theme directory root
register_theme_directory( get_theme_root() );

godog's avatar
godog committed
195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213
// Load active plugins.
foreach ( wp_get_active_and_valid_plugins() as $plugin )
	include_once( $plugin );
unset( $plugin );

// Load pluggable functions.
require( ABSPATH . WPINC . '/pluggable.php' );
require( ABSPATH . WPINC . '/pluggable-deprecated.php' );

// Set internal encoding.
wp_set_internal_encoding();

// Run wp_cache_postload() if object cache is enabled and the function exists.
if ( WP_CACHE && function_exists( 'wp_cache_postload' ) )
	wp_cache_postload();

do_action( 'plugins_loaded' );

// Define constants which affect functionality if not already defined.
lechuck's avatar
lechuck committed
214
wp_functionality_constants();
godog's avatar
godog committed
215 216 217 218 219 220 221 222 223 224 225

// Add magic quotes and set up $_REQUEST ( $_GET + $_POST )
wp_magic_quotes();

do_action( 'sanitize_comment_cookies' );

/**
 * WordPress Query object
 * @global object $wp_the_query
 * @since 2.0.0
 */
shammash's avatar
shammash committed
226
$wp_the_query = new WP_Query();
godog's avatar
godog committed
227 228 229 230 231 232 233

/**
 * Holds the reference to @see $wp_the_query
 * Use this global for WordPress queries
 * @global object $wp_query
 * @since 1.5.0
 */
lechuck's avatar
lechuck committed
234
$wp_query = $wp_the_query;
godog's avatar
godog committed
235 236 237 238 239 240

/**
 * Holds the WordPress Rewrite object for creating pretty URLs
 * @global object $wp_rewrite
 * @since 1.5.0
 */
lechuck's avatar
lechuck committed
241
$GLOBALS['wp_rewrite'] = new WP_Rewrite();
godog's avatar
godog committed
242 243 244 245 246 247

/**
 * WordPress Object
 * @global object $wp
 * @since 2.0.0
 */
shammash's avatar
shammash committed
248
$wp = new WP();
godog's avatar
godog committed
249 250 251 252 253 254

/**
 * WordPress Widget Factory Object
 * @global object $wp_widget_factory
 * @since 2.8.0
 */
root's avatar
root committed
255
$GLOBALS['wp_widget_factory'] = new WP_Widget_Factory();
godog's avatar
godog committed
256

lechuck's avatar
lechuck committed
257 258 259 260 261 262 263
/**
 * WordPress User Roles
 * @global object $wp_roles
 * @since 2.0.0
 */
$GLOBALS['wp_roles'] = new WP_Roles();

godog's avatar
godog committed
264 265 266 267 268 269 270 271 272 273
do_action( 'setup_theme' );

// Define the template related constants.
wp_templating_constants(  );

// Load the default text localization domain.
load_default_textdomain();

$locale = get_locale();
$locale_file = WP_LANG_DIR . "/$locale.php";
shammash's avatar
shammash committed
274
if ( ( 0 === validate_file( $locale ) ) && is_readable( $locale_file ) )
godog's avatar
godog committed
275
	require( $locale_file );
lechuck's avatar
lechuck committed
276
unset( $locale_file );
godog's avatar
godog committed
277 278

// Pull in locale data after loading text domain.
lechuck's avatar
lechuck committed
279
require_once( ABSPATH . WPINC . '/locale.php' );
godog's avatar
godog committed
280 281 282 283 284 285

/**
 * WordPress Locale object for loading locale domain date and various strings.
 * @global object $wp_locale
 * @since 2.1.0
 */
root's avatar
root committed
286
$GLOBALS['wp_locale'] = new WP_Locale();
godog's avatar
godog committed
287 288

// Load the functions for the active theme, for both parent and child theme if applicable.
shammash's avatar
shammash committed
289 290 291 292 293 294
if ( ! defined( 'WP_INSTALLING' ) || 'wp-activate.php' === $pagenow ) {
	if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/functions.php' ) )
		include( STYLESHEETPATH . '/functions.php' );
	if ( file_exists( TEMPLATEPATH . '/functions.php' ) )
		include( TEMPLATEPATH . '/functions.php' );
}
godog's avatar
godog committed
295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329

do_action( 'after_setup_theme' );

// Set up current user.
$wp->init();

/**
 * Most of WP is loaded at this stage, and the user is authenticated. WP continues
 * to load on the init hook that follows (e.g. widgets), and many plugins instantiate
 * themselves on it for all sorts of reasons (e.g. they need a user, a taxonomy, etc.).
 *
 * If you wish to plug an action once WP is loaded, use the wp_loaded hook below.
 */
do_action( 'init' );

// Check site status
if ( is_multisite() ) {
	if ( true !== ( $file = ms_site_check() ) ) {
		require( $file );
		die();
	}
	unset($file);
}

/**
 * This hook is fired once WP, all plugins, and the theme are fully loaded and instantiated.
 *
 * AJAX requests should use wp-admin/admin-ajax.php. admin-ajax.php can handle requests for
 * users not logged in.
 *
 * @link http://codex.wordpress.org/AJAX_in_Plugins
 *
 * @since 3.0.0
 */
do_action('wp_loaded');