2013-10-25 00:58:23 +02:00
|
|
|
<?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)
|
|
|
|
*
|
|
|
|
* @internal This file must be parsable by PHP4.
|
|
|
|
*
|
|
|
|
* @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' );
|
2016-08-19 06:10:30 +02:00
|
|
|
require_once( ABSPATH . WPINC . '/plugin.php' );
|
2013-11-05 01:24:10 +01:00
|
|
|
|
|
|
|
/*
|
|
|
|
* These can't be directly globalized in version.php. When updating,
|
|
|
|
* we're including version.php from another install and don't want
|
|
|
|
* these values to be overridden if already set.
|
|
|
|
*/
|
2016-02-17 20:32:25 +01:00
|
|
|
global $wp_version, $wp_db_version, $tinymce_version, $required_php_version, $required_mysql_version, $wp_local_package;
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/version.php' );
|
|
|
|
|
2015-10-08 23:45:25 +02:00
|
|
|
/**
|
|
|
|
* If not already configured, `$blog_id` will default to 1 in a single site
|
|
|
|
* configuration. In multisite, it will be overridden by default in ms-settings.php.
|
|
|
|
*
|
|
|
|
* @global int $blog_id
|
|
|
|
* @since 2.0.0
|
|
|
|
*/
|
|
|
|
global $blog_id;
|
|
|
|
|
2015-06-25 04:29:31 +02:00
|
|
|
// Set initial default constants including WP_MEMORY_LIMIT, WP_MAX_MEMORY_LIMIT, WP_DEBUG, SCRIPT_DEBUG, WP_CONTENT_DIR and WP_CACHE.
|
2013-10-25 00:58:23 +02:00
|
|
|
wp_initial_constants();
|
|
|
|
|
|
|
|
// Check for the required PHP version and for the MySQL extension or a database drop-in.
|
|
|
|
wp_check_php_mysql_versions();
|
|
|
|
|
|
|
|
// Disable magic quotes at runtime. Magic quotes are added using wpdb later in wp-settings.php.
|
|
|
|
@ini_set( 'magic_quotes_runtime', 0 );
|
2015-11-16 01:54:28 +01:00
|
|
|
@ini_set( 'magic_quotes_sybase', 0 );
|
2013-10-25 00:58:23 +02:00
|
|
|
|
|
|
|
// WordPress calculates offsets from UTC.
|
|
|
|
date_default_timezone_set( 'UTC' );
|
|
|
|
|
|
|
|
// Turn register_globals off.
|
|
|
|
wp_unregister_GLOBALS();
|
|
|
|
|
|
|
|
// Standardize $_SERVER variables across setups.
|
|
|
|
wp_fix_server_vars();
|
|
|
|
|
|
|
|
// Check if we have received a request due to missing favicon.ico
|
|
|
|
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();
|
|
|
|
|
2016-06-02 20:47:27 +02:00
|
|
|
/**
|
2016-06-12 04:43:27 +02:00
|
|
|
* Filters whether to enable loading of the advanced-cache.php drop-in.
|
2016-06-02 20:47:27 +02:00
|
|
|
*
|
2016-06-12 04:43:27 +02:00
|
|
|
* This filter runs before it can be used by plugins. It is designed for non-web
|
2016-07-09 15:17:30 +02:00
|
|
|
* run-times. If false is returned, advanced-cache.php will never be loaded.
|
2016-06-02 20:47:27 +02:00
|
|
|
*
|
|
|
|
* @since 4.6.0
|
|
|
|
*
|
2016-06-12 04:43:27 +02:00
|
|
|
* @param bool $enable_advanced_cache Whether to enable loading advanced-cache.php (if present).
|
|
|
|
* Default true.
|
2016-06-02 20:47:27 +02:00
|
|
|
*/
|
2016-06-12 04:43:27 +02:00
|
|
|
if ( WP_CACHE && apply_filters( 'enable_loading_advanced_cache_dropin', true ) ) {
|
2013-10-25 00:58:23 +02:00
|
|
|
// For an advanced caching plugin to use. Uses a static drop-in because you would only want one.
|
|
|
|
WP_DEBUG ? include( WP_CONTENT_DIR . '/advanced-cache.php' ) : @include( WP_CONTENT_DIR . '/advanced-cache.php' );
|
2016-05-27 21:20:29 +02:00
|
|
|
}
|
2013-10-25 00:58:23 +02:00
|
|
|
|
|
|
|
// Define WP_LANG_DIR if not set.
|
|
|
|
wp_set_lang_dir();
|
|
|
|
|
|
|
|
// Load early WordPress files.
|
|
|
|
require( ABSPATH . WPINC . '/compat.php' );
|
2016-08-26 23:11:29 +02:00
|
|
|
require( ABSPATH . WPINC . '/option.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/functions.php' );
|
2016-08-26 20:11:39 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-matchesmapregex.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-wp.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-error.php' );
|
|
|
|
require( ABSPATH . WPINC . '/pomo/mo.php' );
|
2016-08-26 19:40:35 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-phpass.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
|
|
|
|
// Include the wpdb class and, if present, a db.php database drop-in.
|
2016-06-26 16:26:29 +02:00
|
|
|
global $wpdb;
|
2013-10-25 00:58:23 +02:00
|
|
|
require_wp_db();
|
|
|
|
|
|
|
|
// Set the database table prefix and the format specifiers for database table columns.
|
|
|
|
$GLOBALS['table_prefix'] = $table_prefix;
|
|
|
|
wp_set_wpdb_vars();
|
|
|
|
|
|
|
|
// Start the WordPress object cache, or an external object cache if the drop-in is present.
|
|
|
|
wp_start_object_cache();
|
|
|
|
|
|
|
|
// Attach the default filters.
|
|
|
|
require( ABSPATH . WPINC . '/default-filters.php' );
|
|
|
|
|
|
|
|
// Initialize multisite if enabled.
|
|
|
|
if ( is_multisite() ) {
|
2016-05-21 00:04:27 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-site-query.php' );
|
2016-06-28 23:27:30 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-network-query.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/ms-blogs.php' );
|
|
|
|
require( ABSPATH . WPINC . '/ms-settings.php' );
|
|
|
|
} elseif ( ! defined( 'MULTISITE' ) ) {
|
|
|
|
define( 'MULTISITE', false );
|
|
|
|
}
|
|
|
|
|
|
|
|
register_shutdown_function( 'shutdown_action_hook' );
|
|
|
|
|
|
|
|
// Stop most of WordPress from being loaded if we just want the basics.
|
|
|
|
if ( SHORTINIT )
|
|
|
|
return false;
|
|
|
|
|
|
|
|
// Load the L10n library.
|
|
|
|
require_once( ABSPATH . WPINC . '/l10n.php' );
|
|
|
|
|
|
|
|
// Run the installer if WordPress is not installed.
|
|
|
|
wp_not_installed();
|
|
|
|
|
|
|
|
// Load most of WordPress.
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-walker.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-ajax-response.php' );
|
|
|
|
require( ABSPATH . WPINC . '/formatting.php' );
|
|
|
|
require( ABSPATH . WPINC . '/capabilities.php' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-roles.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-role.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-user.php' );
|
2016-08-25 19:20:38 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-query.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/query.php' );
|
|
|
|
require( ABSPATH . WPINC . '/date.php' );
|
|
|
|
require( ABSPATH . WPINC . '/theme.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-theme.php' );
|
|
|
|
require( ABSPATH . WPINC . '/template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/user.php' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-user-query.php' );
|
2016-08-26 19:45:17 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-session-tokens.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-user-meta-session-tokens.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/meta.php' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-meta-query.php' );
|
More performance improvements to metadata lazyloading.
Comment and term meta lazyloading for `WP_Query` loops, introduced in 4.4,
depended on filter callback methods belonging to `WP_Query` objects. This meant
storing `WP_Query` objects in the `$wp_filter` global (via `add_filter()`),
requiring that PHP retain the objects in memory, even when the local variables
would typically be expunged during normal garbage collection. In cases where a
large number of `WP_Query` objects were instantiated on a single pageload,
and/or where the contents of the `WP_Query` objects were quite large, serious
performance issues could result.
We skirt this problem by moving metadata lazyloading out of `WP_Query`. The
new `WP_Metadata_Lazyloader` class acts as a lazyload queue. Query instances
register items whose metadata should be lazyloaded - such as post terms, or
comments - and a `WP_Metadata_Lazyloader` method will intercept comment and
term meta requests to perform the cache priming. Since `WP_Metadata_Lazyloader`
instances are far smaller than `WP_Query` (containing only object IDs), and
clean up after themselves far better than the previous `WP_Query` methods (bp
only running their callbacks a single time for a given set of queued objects),
the resource use is decreased dramatically.
See [36525] for an earlier step in this direction.
Props lpawlik, stevegrunwell, boonebgorges.
Fixes #35816.
Built from https://develop.svn.wordpress.org/trunk@36566
git-svn-id: http://core.svn.wordpress.org/trunk@36533 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-02-17 23:58:26 +01:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-metadata-lazyloader.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/general-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/link-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/author-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/post.php' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/class-walker-page.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-walker-page-dropdown.php' );
|
2016-06-28 18:41:35 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-post-type.php' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-post.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/post-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/revision.php' );
|
|
|
|
require( ABSPATH . WPINC . '/post-formats.php' );
|
|
|
|
require( ABSPATH . WPINC . '/post-thumbnail-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/category.php' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/class-walker-category.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-walker-category-dropdown.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/category-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/comment.php' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-comment.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-comment-query.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-walker-comment.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/comment-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rewrite.php' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-rewrite.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
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' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-term.php' );
|
2016-05-26 06:33:30 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-term-query.php' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-tax-query.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/update.php' );
|
|
|
|
require( ABSPATH . WPINC . '/canonical.php' );
|
|
|
|
require( ABSPATH . WPINC . '/shortcodes.php' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/embed.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-embed.php' );
|
2016-08-26 11:49:28 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-oembed.php' );
|
Embeds: Add oEmbed provider support.
For the past 6 years, WordPress has operated as an oEmbed consumer, allowing users to easily embed content from other sites. By adding oEmbed provider support, this allows any oEmbed consumer to embed posts from WordPress sites.
In addition to creating an oEmbed provider, WordPress' oEmbed consumer code has been enhanced to work with any site that provides oEmbed data (as long as it matches some strict security rules), and provides a preview from within the post editor.
For security, embeds appear within a sandboxed iframe - the iframe content is a template that can be styled or replaced entirely by the theme on the provider site.
Props swissspidy, pento, melchoyce, netweb, pfefferle, johnbillion, extendwings, davidbinda, danielbachhuber, SergeyBiryukov, afercia
Fixes #32522.
Built from https://develop.svn.wordpress.org/trunk@34903
git-svn-id: http://core.svn.wordpress.org/trunk@34868 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-07 12:36:25 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-oembed-controller.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/media.php' );
|
|
|
|
require( ABSPATH . WPINC . '/http.php' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/class-http.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-http-streams.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-http-curl.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-http-proxy.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-http-cookie.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-http-encoding.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-http-response.php' );
|
2016-05-13 06:42:28 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-http-requests-response.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/widgets.php' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-widget.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-widget-factory.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/nav-menu.php' );
|
|
|
|
require( ABSPATH . WPINC . '/nav-menu-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/admin-bar.php' );
|
REST API: Introduce baby API to the world.
Baby API was born at 2.8KLOC on October 8th at 2:30 UTC. API has lots
of growing to do, so wish it the best of luck.
Thanks to everyone who helped along the way:
Props rmccue, rachelbaker, danielbachhuber, joehoyle, drewapicture,
adamsilverstein, netweb, tlovett1, shelob9, kadamwhite, pento,
westonruter, nikv, tobych, redsweater, alecuf, pollyplummer, hurtige,
bpetty, oso96_2000, ericlewis, wonderboymusic, joshkadis, mordauk,
jdgrimes, johnbillion, jeremyfelt, thiago-negri, jdolan, pkevan,
iseulde, thenbrent, maxcutler, kwight, markoheijnen, phh, natewr,
jjeaton, shprink, mattheu, quasel, jmusal, codebykat, hubdotcom,
tapsboy, QWp6t, pushred, jaredcobb, justinsainton, japh, matrixik,
jorbin, frozzare, codfish, michael-arestad, kellbot, ironpaperweight,
simonlampen, alisspers, eliorivero, davidbhayes, JohnDittmar, dimadin,
traversal, cmmarslender, Toddses, kokarn, welcher, and ericpedia.
Fixes #33982.
Built from https://develop.svn.wordpress.org/trunk@34928
git-svn-id: http://core.svn.wordpress.org/trunk@34893 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-08 04:31:25 +02:00
|
|
|
require( ABSPATH . WPINC . '/rest-api.php' );
|
2015-11-20 08:24:30 +01:00
|
|
|
require( ABSPATH . WPINC . '/rest-api/class-wp-rest-server.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/class-wp-rest-response.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/class-wp-rest-request.php' );
|
2016-08-26 12:20:29 +02:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-locale.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
|
2016-08-26 11:53:28 +02:00
|
|
|
$GLOBALS['wp_embed'] = new WP_Embed();
|
|
|
|
|
2013-10-25 00:58:23 +02:00
|
|
|
// 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.
|
|
|
|
wp_plugin_directory_constants();
|
|
|
|
|
2014-02-11 00:00:15 +01:00
|
|
|
$GLOBALS['wp_plugin_paths'] = array();
|
|
|
|
|
2013-10-25 00:58:23 +02:00
|
|
|
// Load must-use plugins.
|
|
|
|
foreach ( wp_get_mu_plugins() as $mu_plugin ) {
|
|
|
|
include_once( $mu_plugin );
|
|
|
|
}
|
|
|
|
unset( $mu_plugin );
|
|
|
|
|
|
|
|
// Load network activated plugins.
|
|
|
|
if ( is_multisite() ) {
|
2015-08-25 22:28:22 +02:00
|
|
|
foreach ( wp_get_active_network_plugins() as $network_plugin ) {
|
2014-02-11 00:00:15 +01:00
|
|
|
wp_register_plugin_realpath( $network_plugin );
|
2013-10-25 00:58:23 +02:00
|
|
|
include_once( $network_plugin );
|
|
|
|
}
|
|
|
|
unset( $network_plugin );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires once all must-use and network-activated plugins have loaded.
|
|
|
|
*
|
|
|
|
* @since 2.8.0
|
|
|
|
*/
|
|
|
|
do_action( 'muplugins_loaded' );
|
|
|
|
|
|
|
|
if ( is_multisite() )
|
|
|
|
ms_cookie_constants( );
|
|
|
|
|
2015-01-06 02:57:22 +01:00
|
|
|
// Define constants after multisite is loaded.
|
2013-10-25 00:58:23 +02:00
|
|
|
wp_cookie_constants();
|
|
|
|
|
|
|
|
// Define and enforce our SSL constants
|
|
|
|
wp_ssl_constants();
|
|
|
|
|
|
|
|
// 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();
|
|
|
|
|
|
|
|
// Register the default theme directory root
|
|
|
|
register_theme_directory( get_theme_root() );
|
|
|
|
|
|
|
|
// Load active plugins.
|
2014-02-11 00:00:15 +01:00
|
|
|
foreach ( wp_get_active_and_valid_plugins() as $plugin ) {
|
|
|
|
wp_register_plugin_realpath( $plugin );
|
2013-10-25 00:58:23 +02:00
|
|
|
include_once( $plugin );
|
2014-02-11 00:00:15 +01:00
|
|
|
}
|
2013-10-25 00:58:23 +02:00
|
|
|
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();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires once activated plugins have loaded.
|
|
|
|
*
|
|
|
|
* Pluggable functions are also available at this point in the loading order.
|
|
|
|
*
|
2013-10-30 15:39:10 +01:00
|
|
|
* @since 1.5.0
|
2013-10-25 00:58:23 +02:00
|
|
|
*/
|
|
|
|
do_action( 'plugins_loaded' );
|
|
|
|
|
|
|
|
// Define constants which affect functionality if not already defined.
|
|
|
|
wp_functionality_constants();
|
|
|
|
|
|
|
|
// Add magic quotes and set up $_REQUEST ( $_GET + $_POST )
|
|
|
|
wp_magic_quotes();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires when comment cookies are sanitized.
|
|
|
|
*
|
|
|
|
* @since 2.0.11
|
|
|
|
*/
|
|
|
|
do_action( 'sanitize_comment_cookies' );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* WordPress Query object
|
2015-10-10 17:45:25 +02:00
|
|
|
* @global WP_Query $wp_the_query
|
2013-10-25 00:58:23 +02:00
|
|
|
* @since 2.0.0
|
|
|
|
*/
|
2014-01-22 09:25:12 +01:00
|
|
|
$GLOBALS['wp_the_query'] = new WP_Query();
|
2013-10-25 00:58:23 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Holds the reference to @see $wp_the_query
|
|
|
|
* Use this global for WordPress queries
|
2015-10-10 17:45:25 +02:00
|
|
|
* @global WP_Query $wp_query
|
2013-10-25 00:58:23 +02:00
|
|
|
* @since 1.5.0
|
|
|
|
*/
|
2014-01-22 09:25:12 +01:00
|
|
|
$GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];
|
2013-10-25 00:58:23 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Holds the WordPress Rewrite object for creating pretty URLs
|
2015-10-10 17:45:25 +02:00
|
|
|
* @global WP_Rewrite $wp_rewrite
|
2013-10-25 00:58:23 +02:00
|
|
|
* @since 1.5.0
|
|
|
|
*/
|
|
|
|
$GLOBALS['wp_rewrite'] = new WP_Rewrite();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* WordPress Object
|
2015-10-10 17:45:25 +02:00
|
|
|
* @global WP $wp
|
2013-10-25 00:58:23 +02:00
|
|
|
* @since 2.0.0
|
|
|
|
*/
|
2014-01-22 09:25:12 +01:00
|
|
|
$GLOBALS['wp'] = new WP();
|
2013-10-25 00:58:23 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* WordPress Widget Factory Object
|
2015-10-10 17:45:25 +02:00
|
|
|
* @global WP_Widget_Factory $wp_widget_factory
|
2013-10-25 00:58:23 +02:00
|
|
|
* @since 2.8.0
|
|
|
|
*/
|
|
|
|
$GLOBALS['wp_widget_factory'] = new WP_Widget_Factory();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* WordPress User Roles
|
2015-10-10 17:45:25 +02:00
|
|
|
* @global WP_Roles $wp_roles
|
2013-10-25 00:58:23 +02:00
|
|
|
* @since 2.0.0
|
|
|
|
*/
|
|
|
|
$GLOBALS['wp_roles'] = new WP_Roles();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires before the theme is loaded.
|
|
|
|
*
|
|
|
|
* @since 2.6.0
|
|
|
|
*/
|
|
|
|
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";
|
|
|
|
if ( ( 0 === validate_file( $locale ) ) && is_readable( $locale_file ) )
|
|
|
|
require( $locale_file );
|
|
|
|
unset( $locale_file );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* WordPress Locale object for loading locale domain date and various strings.
|
2015-10-10 17:45:25 +02:00
|
|
|
* @global WP_Locale $wp_locale
|
2013-10-25 00:58:23 +02:00
|
|
|
* @since 2.1.0
|
|
|
|
*/
|
|
|
|
$GLOBALS['wp_locale'] = new WP_Locale();
|
|
|
|
|
|
|
|
// Load the functions for the active theme, for both parent and child theme if applicable.
|
Use `wp_installing()` instead of `WP_INSTALLING` constant.
The `WP_INSTALLING` constant is a flag that WordPress sets in a number of
places, telling the system that options should be fetched directly from the
database instead of from the cache, that WP should not ping wordpress.org for
updates, that the normal "not installed" checks should be bypassed, and so on.
A constant is generally necessary for this purpose, because the flag is
typically set before the WP bootstrap, meaning that WP functions are not yet
available. However, it is possible - notably, during `wpmu_create_blog()` -
for the "installing" flag to be set after WP has already loaded. In these
cases, `WP_INSTALLING` would be set for the remainder of the process, since
there's no way to change a constant once it's defined. This, in turn, polluted
later function calls that ought to have been outside the scope of site
creation, particularly the non-caching of option data. The problem was
particularly evident in the case of the automated tests, where `WP_INSTALLING`
was set the first time a site was created, and remained set for the rest of the
suite.
The new `wp_installing()` function allows developers to fetch the current
installation status (when called without any arguments) or to set the
installation status (when called with a boolean `true` or `false`). Use of
the `WP_INSTALLING` constant is still supported; `wp_installing()` will default
to `true` if the constant is defined during the bootstrap.
Props boonebgorges, jeremyfelt.
See #31130.
Built from https://develop.svn.wordpress.org/trunk@34828
git-svn-id: http://core.svn.wordpress.org/trunk@34793 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2015-10-05 17:06:28 +02:00
|
|
|
if ( ! wp_installing() || 'wp-activate.php' === $pagenow ) {
|
2014-07-09 20:07:16 +02:00
|
|
|
if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/functions.php' ) )
|
|
|
|
include( STYLESHEETPATH . '/functions.php' );
|
|
|
|
if ( file_exists( TEMPLATEPATH . '/functions.php' ) )
|
|
|
|
include( TEMPLATEPATH . '/functions.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires after the theme is loaded.
|
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*/
|
|
|
|
do_action( 'after_setup_theme' );
|
|
|
|
|
|
|
|
// Set up current user.
|
2014-01-22 15:48:11 +01:00
|
|
|
$GLOBALS['wp']->init();
|
2013-10-25 00:58:23 +02:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires after WordPress has finished loading but before any headers are sent.
|
|
|
|
*
|
|
|
|
* Most of WP is loaded at this stage, and the user is authenticated. WP continues
|
2016-05-23 19:07:28 +02:00
|
|
|
* to load on the {@see 'init'} hook that follows (e.g. widgets), and many plugins instantiate
|
2013-10-25 00:58:23 +02:00
|
|
|
* themselves on it for all sorts of reasons (e.g. they need a user, a taxonomy, etc.).
|
|
|
|
*
|
2016-05-23 19:07:28 +02:00
|
|
|
* If you wish to plug an action once WP is loaded, use the {@see 'wp_loaded'} hook below.
|
2013-10-25 00:58:23 +02:00
|
|
|
*
|
2013-10-30 15:39:10 +01:00
|
|
|
* @since 1.5.0
|
2013-10-25 00:58:23 +02:00
|
|
|
*/
|
|
|
|
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.
|
|
|
|
*
|
2016-07-10 02:51:30 +02:00
|
|
|
* Ajax requests should use wp-admin/admin-ajax.php. admin-ajax.php can handle requests for
|
2013-10-25 00:58:23 +02:00
|
|
|
* users not logged in.
|
|
|
|
*
|
2015-04-12 23:29:32 +02:00
|
|
|
* @link https://codex.wordpress.org/AJAX_in_Plugins
|
2013-10-25 00:58:23 +02:00
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*/
|
|
|
|
do_action( 'wp_loaded' );
|