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' );
|
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.
|
|
|
|
*/
|
|
|
|
global $wp_version, $wp_db_version, $tinymce_version, $required_php_version, $required_mysql_version;
|
2013-10-25 00:58:23 +02:00
|
|
|
require( ABSPATH . WPINC . '/version.php' );
|
|
|
|
|
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 );
|
|
|
|
@ini_set( 'magic_quotes_sybase', 0 );
|
|
|
|
|
|
|
|
// 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();
|
|
|
|
|
|
|
|
// 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' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-error.php' );
|
|
|
|
require( ABSPATH . WPINC . '/plugin.php' );
|
|
|
|
require( ABSPATH . WPINC . '/pomo/mo.php' );
|
|
|
|
|
|
|
|
// Include the wpdb class and, if present, a db.php database drop-in.
|
|
|
|
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() ) {
|
|
|
|
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' );
|
|
|
|
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' );
|
2014-07-18 11:13:15 +02:00
|
|
|
require( ABSPATH . WPINC . '/session.php' );
|
2013-10-25 00:58:23 +02:00
|
|
|
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' );
|
|
|
|
require( ABSPATH . WPINC . '/revision.php' );
|
|
|
|
require( ABSPATH . WPINC . '/post-formats.php' );
|
|
|
|
require( ABSPATH . WPINC . '/post-thumbnail-template.php' );
|
|
|
|
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' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-embed.php' );
|
2015-10-06 06:05:24 +02:00
|
|
|
require( ABSPATH . WPINC . '/embed-functions.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' );
|
|
|
|
require( ABSPATH . WPINC . '/widgets.php' );
|
|
|
|
require( ABSPATH . WPINC . '/nav-menu.php' );
|
|
|
|
require( ABSPATH . WPINC . '/nav-menu-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/admin-bar.php' );
|
|
|
|
|
|
|
|
// 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
|
|
|
|
* @global object $wp_the_query
|
|
|
|
* @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
|
|
|
|
* @global object $wp_query
|
|
|
|
* @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
|
|
|
|
* @global object $wp_rewrite
|
|
|
|
* @since 1.5.0
|
|
|
|
*/
|
|
|
|
$GLOBALS['wp_rewrite'] = new WP_Rewrite();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* WordPress Object
|
|
|
|
* @global object $wp
|
|
|
|
* @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
|
|
|
|
* @global object $wp_widget_factory
|
|
|
|
* @since 2.8.0
|
|
|
|
*/
|
|
|
|
$GLOBALS['wp_widget_factory'] = new WP_Widget_Factory();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* WordPress User Roles
|
|
|
|
* @global object $wp_roles
|
|
|
|
* @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 );
|
|
|
|
|
|
|
|
// Pull in locale data after loading text domain.
|
|
|
|
require_once( ABSPATH . WPINC . '/locale.php' );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* WordPress Locale object for loading locale domain date and various strings.
|
|
|
|
* @global object $wp_locale
|
|
|
|
* @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
|
|
|
|
* 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.
|
|
|
|
*
|
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.
|
|
|
|
*
|
|
|
|
* AJAX requests should use wp-admin/admin-ajax.php. admin-ajax.php can handle requests for
|
|
|
|
* 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' );
|