2013-10-24 18:58:23 -04: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)
|
|
|
|
*
|
|
|
|
* @package WordPress
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Stores the location of the WordPress directory of functions, classes, and core content.
|
|
|
|
*
|
|
|
|
* @since 1.0.0
|
|
|
|
*/
|
|
|
|
define( 'WPINC', 'wp-includes' );
|
|
|
|
|
2019-09-19 08:02:58 -04:00
|
|
|
/*
|
|
|
|
* These can't be directly globalized in version.php. When updating,
|
|
|
|
* we're including version.php from another installation 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, $wp_local_package;
|
|
|
|
require( ABSPATH . WPINC . '/version.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/load.php' );
|
2019-09-19 08:02:58 -04:00
|
|
|
|
|
|
|
// Check for the required PHP version and for the MySQL extension or a database drop-in.
|
|
|
|
wp_check_php_mysql_versions();
|
|
|
|
|
|
|
|
// Include files required for initialization.
|
Bootstrap/Load: Introduce a recovery mode for fixing fatal errors.
Using the new fatal handler introduced in [44962], an email is sent to the admin when a fatal error occurs. This email includes a secret link to enter recovery mode. When clicked, the link will be validated and on success a cookie will be placed on the client, enabling recovery mode for that user. This functionality is executed early before plugins and themes are loaded, in order to be unaffected by potential fatal errors these might be causing.
When in recovery mode, broken plugins and themes will be paused for that client, so that they are able to access the admin backend despite of these errors. They are notified about the broken extensions and the errors caused, and can then decide whether they would like to temporarily deactivate the extension or fix the problem and resume the extension.
A link in the admin bar allows the client to exit recovery mode.
Props timothyblynjacobs, afragen, flixos90, nerrad, miss_jwo, schlessera, spacedmonkey, swissspidy.
Fixes #46130, #44458.
Built from https://develop.svn.wordpress.org/trunk@44973
git-svn-id: http://core.svn.wordpress.org/trunk@44804 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-03-21 17:53:51 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-paused-extensions-storage.php' );
|
Bootstrap/Load: Introduce fatal error handler.
This changeset introduces a `WP_Fatal_Error_Handler` class that detects fatal errors and displays a more user-friendly message about the site experiencing technical difficulties.
Websites that have custom requirements in that regard can implement their own fatal error handler by adding a `fatal-error-handler.php` drop-in that returns the handler instance to use, which must be based on a class that inherits `WP_Fatal_Error_Handler`. That handler will then be used in place of the default one. Alternatively, the fatal error handler feature can be completely disable through a constant `WP_DISABLE_FATAL_ERROR_HANDLER`.
Websites that would like to modify specifically the error template displayed in the frontend can add a `php-error.php` drop-in that works similarly to the existing `db-error.php` drop-in. For more granular customization, the fatal error handler also includes new filters `wp_should_handle_php_error`, `wp_php_error_message` and `wp_php_error_args`.
Props afragen, bradleyt, flixos90, ocean90, schlessera, SergeyBiryukov, spacedmonkey, timothyblynjacobs.
See #46130, #44458.
Built from https://develop.svn.wordpress.org/trunk@44962
git-svn-id: http://core.svn.wordpress.org/trunk@44793 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-03-21 12:03:51 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-fatal-error-handler.php' );
|
Bootstrap/Load: Introduce a recovery mode for fixing fatal errors.
Using the new fatal handler introduced in [44962], an email is sent to the admin when a fatal error occurs. This email includes a secret link to enter recovery mode. When clicked, the link will be validated and on success a cookie will be placed on the client, enabling recovery mode for that user. This functionality is executed early before plugins and themes are loaded, in order to be unaffected by potential fatal errors these might be causing.
When in recovery mode, broken plugins and themes will be paused for that client, so that they are able to access the admin backend despite of these errors. They are notified about the broken extensions and the errors caused, and can then decide whether they would like to temporarily deactivate the extension or fix the problem and resume the extension.
A link in the admin bar allows the client to exit recovery mode.
Props timothyblynjacobs, afragen, flixos90, nerrad, miss_jwo, schlessera, spacedmonkey, swissspidy.
Fixes #46130, #44458.
Built from https://develop.svn.wordpress.org/trunk@44973
git-svn-id: http://core.svn.wordpress.org/trunk@44804 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-03-21 17:53:51 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-recovery-mode-cookie-service.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-recovery-mode-key-service.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-recovery-mode-link-service.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-recovery-mode-email-service.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-recovery-mode.php' );
|
Bootstrap/Load: Introduce fatal error handler.
This changeset introduces a `WP_Fatal_Error_Handler` class that detects fatal errors and displays a more user-friendly message about the site experiencing technical difficulties.
Websites that have custom requirements in that regard can implement their own fatal error handler by adding a `fatal-error-handler.php` drop-in that returns the handler instance to use, which must be based on a class that inherits `WP_Fatal_Error_Handler`. That handler will then be used in place of the default one. Alternatively, the fatal error handler feature can be completely disable through a constant `WP_DISABLE_FATAL_ERROR_HANDLER`.
Websites that would like to modify specifically the error template displayed in the frontend can add a `php-error.php` drop-in that works similarly to the existing `db-error.php` drop-in. For more granular customization, the fatal error handler also includes new filters `wp_should_handle_php_error`, `wp_php_error_message` and `wp_php_error_args`.
Props afragen, bradleyt, flixos90, ocean90, schlessera, SergeyBiryukov, spacedmonkey, timothyblynjacobs.
See #46130, #44458.
Built from https://develop.svn.wordpress.org/trunk@44962
git-svn-id: http://core.svn.wordpress.org/trunk@44793 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-03-21 12:03:51 -04:00
|
|
|
require( ABSPATH . WPINC . '/error-protection.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/default-constants.php' );
|
2016-08-19 00:10:30 -04:00
|
|
|
require_once( ABSPATH . WPINC . '/plugin.php' );
|
2013-11-04 19:24:10 -05:00
|
|
|
|
2015-10-08 17:45:25 -04: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-24 22:29:31 -04: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-24 18:58:23 -04:00
|
|
|
wp_initial_constants();
|
|
|
|
|
2019-03-28 15:04:51 -04:00
|
|
|
// Make sure we register the shutdown handler for fatal errors as soon as possible.
|
|
|
|
wp_register_fatal_error_handler();
|
|
|
|
|
2013-10-24 18:58:23 -04: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'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 14:47:27 -04:00
|
|
|
/**
|
2016-06-11 22:43:27 -04:00
|
|
|
* Filters whether to enable loading of the advanced-cache.php drop-in.
|
2016-06-02 14:47:27 -04:00
|
|
|
*
|
2016-06-11 22:43:27 -04:00
|
|
|
* This filter runs before it can be used by plugins. It is designed for non-web
|
2016-07-09 09:17:30 -04:00
|
|
|
* run-times. If false is returned, advanced-cache.php will never be loaded.
|
2016-06-02 14:47:27 -04:00
|
|
|
*
|
|
|
|
* @since 4.6.0
|
|
|
|
*
|
2016-06-11 22:43:27 -04:00
|
|
|
* @param bool $enable_advanced_cache Whether to enable loading advanced-cache.php (if present).
|
|
|
|
* Default true.
|
2016-06-02 14:47:27 -04:00
|
|
|
*/
|
2019-07-09 01:45:58 -04:00
|
|
|
if ( WP_CACHE && apply_filters( 'enable_loading_advanced_cache_dropin', true ) && file_exists( WP_CONTENT_DIR . '/advanced-cache.php' ) ) {
|
2016-11-29 00:37:41 -05:00
|
|
|
// For an advanced caching plugin to use. Uses a static drop-in because you would only want one.
|
2019-07-09 01:45:58 -04:00
|
|
|
include( WP_CONTENT_DIR . '/advanced-cache.php' );
|
2016-11-29 00:37:41 -05:00
|
|
|
|
|
|
|
// Re-initialize any hooks added manually by advanced-cache.php
|
|
|
|
if ( $wp_filter ) {
|
|
|
|
$wp_filter = WP_Hook::build_preinitialized_hooks( $wp_filter );
|
|
|
|
}
|
2016-05-27 15:20:29 -04:00
|
|
|
}
|
2013-10-24 18:58:23 -04:00
|
|
|
|
|
|
|
// Define WP_LANG_DIR if not set.
|
|
|
|
wp_set_lang_dir();
|
|
|
|
|
|
|
|
// Load early WordPress files.
|
|
|
|
require( ABSPATH . WPINC . '/compat.php' );
|
2016-10-25 17:26:32 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-list-util.php' );
|
2018-03-15 22:01:33 -04:00
|
|
|
require( ABSPATH . WPINC . '/formatting.php' );
|
|
|
|
require( ABSPATH . WPINC . '/meta.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/functions.php' );
|
2018-04-27 07:37:21 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-meta-query.php' );
|
2016-08-31 12:31:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-matchesmapregex.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-error.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/pomo/mo.php' );
|
|
|
|
|
|
|
|
// Include the wpdb class and, if present, a db.php database drop-in.
|
2016-06-26 10:26:29 -04:00
|
|
|
global $wpdb;
|
2013-10-24 18:58:23 -04: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-08-31 12:31:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-site-query.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-network-query.php' );
|
2013-10-24 18:58:23 -04: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.
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( SHORTINIT ) {
|
2013-10-24 18:58:23 -04:00
|
|
|
return false;
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2013-10-24 18:58:23 -04:00
|
|
|
|
|
|
|
// Load the L10n library.
|
|
|
|
require_once( ABSPATH . WPINC . '/l10n.php' );
|
2016-09-01 08:36:28 -04:00
|
|
|
require_once( ABSPATH . WPINC . '/class-wp-locale.php' );
|
2016-10-26 11:36:31 -04:00
|
|
|
require_once( ABSPATH . WPINC . '/class-wp-locale-switcher.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
|
|
|
|
// Run the installer if WordPress is not installed.
|
|
|
|
wp_not_installed();
|
|
|
|
|
|
|
|
// Load most of WordPress.
|
2016-08-31 12:31:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-walker.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-ajax-response.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/capabilities.php' );
|
2016-08-31 12:31:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-roles.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-role.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-user.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-query.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/query.php' );
|
2019-07-25 19:31:56 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-date-query.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/theme.php' );
|
2016-08-31 12:31:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-theme.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/template.php' );
|
2019-06-10 19:54:53 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-user-request.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/user.php' );
|
2016-08-31 12:31:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-user-query.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-session-tokens.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-user-meta-session-tokens.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-metadata-lazyloader.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/general-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/link-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/author-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/post.php' );
|
2016-08-31 12:31:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-walker-page.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-walker-page-dropdown.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-post-type.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-post.php' );
|
2013-10-24 18:58:23 -04: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' );
|
2016-08-31 12:31:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-walker-category.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-walker-category-dropdown.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/category-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/comment.php' );
|
2016-08-31 12:31:29 -04: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-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/comment-template.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rewrite.php' );
|
2016-08-31 12:31:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-rewrite.php' );
|
2013-10-24 18:58:23 -04: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' );
|
2016-10-07 13:12:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-taxonomy.php' );
|
2016-08-31 12:31:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-term.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-term-query.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-tax-query.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/update.php' );
|
|
|
|
require( ABSPATH . WPINC . '/canonical.php' );
|
|
|
|
require( ABSPATH . WPINC . '/shortcodes.php' );
|
2015-11-20 02:24:30 -05:00
|
|
|
require( ABSPATH . WPINC . '/embed.php' );
|
2016-08-31 12:31:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-embed.php' );
|
2019-07-19 00:32:57 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-oembed.php' );
|
2016-08-31 12:31:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-oembed-controller.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/media.php' );
|
|
|
|
require( ABSPATH . WPINC . '/http.php' );
|
2016-08-31 12:31:29 -04: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' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-http-requests-response.php' );
|
2016-11-13 05:36:29 -05:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-http-requests-hooks.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
require( ABSPATH . WPINC . '/widgets.php' );
|
2016-08-31 12:31:29 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-widget.php' );
|
|
|
|
require( ABSPATH . WPINC . '/class-wp-widget-factory.php' );
|
2013-10-24 18:58:23 -04: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-07 22:31:25 -04:00
|
|
|
require( ABSPATH . WPINC . '/rest-api.php' );
|
2016-08-31 12:31:29 -04: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' );
|
REST API: Introduce the Content API endpoints.
REST API endpoints for your WordPress content. These endpoints provide machine-readable external access to your WordPress site with a clear, standards-driven interface, allowing new and innovative apps for interacting with your site. These endpoints support all of the following:
- Posts: Read and write access to all post data, for all types of post-based data, including pages and media.
- Comments: Read and write access to all comment data. This includes pingbacks and trackbacks.
- Terms: Read and write access to all term data.
- Users: Read and write access to all user data. This includes public access to some data for post authors.
- Meta: Read and write access to metadata for posts, comments, terms, and users, on an opt-in basis from plugins.
- Settings: Read and write access to settings, on an opt-in basis from plugins and core. This enables API management of key site content values that are technically stored in options, such as site title and byline.
Love your REST API, WordPress! The infrastructure says, "Let's do lunch!" but the content API endpoints say, "You're paying!"
Props rmccue, rachelbaker, danielbachhuber, joehoyle, adamsilverstein, afurculita, ahmadawais, airesvsg, alisspers, antisilent, apokalyptik, artoliukkonen, attitude, boonebgorges, bradyvercher, brianhogg, caseypatrickdriscoll, chopinbach, chredd, christianesperar, chrisvanpatten, claudiolabarbera, claudiosmweb, cmmarslender, codebykat, coderkevin, codfish, codonnell822, daggerhart, danielpunkass, davidbhayes, delphinus, desrosj, dimadin, dotancohen, DrewAPicture, Dudo1985, duncanjbrown, eherman24, eivhyl, eliorivero, elyobo, en-alis, ericandrewlewis, ericpedia, evansobkowicz, fjarrett, frozzare, georgestephanis, greatislander, guavaworks, hideokamoto, hkdobrev, hubdotcom, hurtige, iandunn, ircrash, ironpaperweight, iseulde, Japh, jaredcobb, JDGrimes, jdolan, jdoubleu, jeremyfelt, jimt, jjeaton, jmusal, jnylen0, johanmynhardt, johnbillion, jonathanbardo, jorbin, joshkadis, JPry, jshreve, jtsternberg, JustinSainton, kacperszurek, kadamwhite, kalenjohnson, kellbot, kjbenk, kokarn, krogsgard, kuchenundkakao, kuldipem, kwight, lgedeon, lukepettway, mantismamita, markoheijnen, matrixik, mattheu, mauteri, maxcutler, mayukojpn, michael-arestad, miyauchi, mjbanks, modemlooper, mrbobbybryant, NateWr, nathanrice, netweb, NikV, nullvariable, oskosk, oso96_2000, oxymoron, pcfreak30, pento, peterwilsoncc, Pezzab, phh, pippinsplugins, pjgalbraith, pkevan, pollyplummer, pushred, quasel, QWp6t, schlessera, schrapel, Shelob9, shprink, simonlampen, Soean, solal, tapsboy, tfrommen, tharsheblows, thenbrent, tierra, tlovett1, tnegri, tobych, Toddses, toro_unit, traversal, vanillalounge, vishalkakadiya, wanecek, web2style, webbgaraget, websupporter, westonruter, whyisjake, wonderboymusic, wpsmith, xknown, zyphonic.
Fixes #38373.
Built from https://develop.svn.wordpress.org/trunk@38832
git-svn-id: http://core.svn.wordpress.org/trunk@38775 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-19 22:55:32 -04:00
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-controller.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-posts-controller.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-attachments-controller.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-post-types-controller.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-post-statuses-controller.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-revisions-controller.php' );
|
REST API: Introduce Autosaves controller and endpoint.
- Adds `WP_REST_Autosaves_Controller` which extends `WP_REST_Revisions_Controller`.
- Autosaves endpoint is registered for all post types except attachment because even post types without revisions enabled are expected to autosave.
- Because setting the `DOING_AUTOSAVE` constant pollutes the test suite, autosaves tests are run last. We may want to improve upon this later.
Also, use a truly impossibly high number in User Controller tests. The number `100`, (or `7777` in `trunk`), could be valid in certain test run configurations. The `REST_TESTS_IMPOSSIBLY_HIGH_NUMBER` constant is impossibly high for this very reason.
Finally, Skip Autosaves controller test for multisite. There's a PHP 5.2 edge case where paths calculated differently, possibly caused by differing version of PHPUnit.
Props adamsilverstein, aduth, azaozz, danielbachhuber, rmccue, danielbachhuber.
Merges [43767], [43768], [43769] to trunk.
See #45132, #45131.
Fixes #45128, #43316.
Built from https://develop.svn.wordpress.org/trunk@44126
git-svn-id: http://core.svn.wordpress.org/trunk@43956 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2018-12-13 17:42:38 -05:00
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-autosaves-controller.php' );
|
REST API: Introduce the Content API endpoints.
REST API endpoints for your WordPress content. These endpoints provide machine-readable external access to your WordPress site with a clear, standards-driven interface, allowing new and innovative apps for interacting with your site. These endpoints support all of the following:
- Posts: Read and write access to all post data, for all types of post-based data, including pages and media.
- Comments: Read and write access to all comment data. This includes pingbacks and trackbacks.
- Terms: Read and write access to all term data.
- Users: Read and write access to all user data. This includes public access to some data for post authors.
- Meta: Read and write access to metadata for posts, comments, terms, and users, on an opt-in basis from plugins.
- Settings: Read and write access to settings, on an opt-in basis from plugins and core. This enables API management of key site content values that are technically stored in options, such as site title and byline.
Love your REST API, WordPress! The infrastructure says, "Let's do lunch!" but the content API endpoints say, "You're paying!"
Props rmccue, rachelbaker, danielbachhuber, joehoyle, adamsilverstein, afurculita, ahmadawais, airesvsg, alisspers, antisilent, apokalyptik, artoliukkonen, attitude, boonebgorges, bradyvercher, brianhogg, caseypatrickdriscoll, chopinbach, chredd, christianesperar, chrisvanpatten, claudiolabarbera, claudiosmweb, cmmarslender, codebykat, coderkevin, codfish, codonnell822, daggerhart, danielpunkass, davidbhayes, delphinus, desrosj, dimadin, dotancohen, DrewAPicture, Dudo1985, duncanjbrown, eherman24, eivhyl, eliorivero, elyobo, en-alis, ericandrewlewis, ericpedia, evansobkowicz, fjarrett, frozzare, georgestephanis, greatislander, guavaworks, hideokamoto, hkdobrev, hubdotcom, hurtige, iandunn, ircrash, ironpaperweight, iseulde, Japh, jaredcobb, JDGrimes, jdolan, jdoubleu, jeremyfelt, jimt, jjeaton, jmusal, jnylen0, johanmynhardt, johnbillion, jonathanbardo, jorbin, joshkadis, JPry, jshreve, jtsternberg, JustinSainton, kacperszurek, kadamwhite, kalenjohnson, kellbot, kjbenk, kokarn, krogsgard, kuchenundkakao, kuldipem, kwight, lgedeon, lukepettway, mantismamita, markoheijnen, matrixik, mattheu, mauteri, maxcutler, mayukojpn, michael-arestad, miyauchi, mjbanks, modemlooper, mrbobbybryant, NateWr, nathanrice, netweb, NikV, nullvariable, oskosk, oso96_2000, oxymoron, pcfreak30, pento, peterwilsoncc, Pezzab, phh, pippinsplugins, pjgalbraith, pkevan, pollyplummer, pushred, quasel, QWp6t, schlessera, schrapel, Shelob9, shprink, simonlampen, Soean, solal, tapsboy, tfrommen, tharsheblows, thenbrent, tierra, tlovett1, tnegri, tobych, Toddses, toro_unit, traversal, vanillalounge, vishalkakadiya, wanecek, web2style, webbgaraget, websupporter, westonruter, whyisjake, wonderboymusic, wpsmith, xknown, zyphonic.
Fixes #38373.
Built from https://develop.svn.wordpress.org/trunk@38832
git-svn-id: http://core.svn.wordpress.org/trunk@38775 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-19 22:55:32 -04:00
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-taxonomies-controller.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-terms-controller.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-users-controller.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-comments-controller.php' );
|
2018-12-13 04:38:25 -05:00
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-search-controller.php' );
|
2018-12-13 21:35:38 -05:00
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-blocks-controller.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-block-renderer-controller.php' );
|
REST API: Introduce the Content API endpoints.
REST API endpoints for your WordPress content. These endpoints provide machine-readable external access to your WordPress site with a clear, standards-driven interface, allowing new and innovative apps for interacting with your site. These endpoints support all of the following:
- Posts: Read and write access to all post data, for all types of post-based data, including pages and media.
- Comments: Read and write access to all comment data. This includes pingbacks and trackbacks.
- Terms: Read and write access to all term data.
- Users: Read and write access to all user data. This includes public access to some data for post authors.
- Meta: Read and write access to metadata for posts, comments, terms, and users, on an opt-in basis from plugins.
- Settings: Read and write access to settings, on an opt-in basis from plugins and core. This enables API management of key site content values that are technically stored in options, such as site title and byline.
Love your REST API, WordPress! The infrastructure says, "Let's do lunch!" but the content API endpoints say, "You're paying!"
Props rmccue, rachelbaker, danielbachhuber, joehoyle, adamsilverstein, afurculita, ahmadawais, airesvsg, alisspers, antisilent, apokalyptik, artoliukkonen, attitude, boonebgorges, bradyvercher, brianhogg, caseypatrickdriscoll, chopinbach, chredd, christianesperar, chrisvanpatten, claudiolabarbera, claudiosmweb, cmmarslender, codebykat, coderkevin, codfish, codonnell822, daggerhart, danielpunkass, davidbhayes, delphinus, desrosj, dimadin, dotancohen, DrewAPicture, Dudo1985, duncanjbrown, eherman24, eivhyl, eliorivero, elyobo, en-alis, ericandrewlewis, ericpedia, evansobkowicz, fjarrett, frozzare, georgestephanis, greatislander, guavaworks, hideokamoto, hkdobrev, hubdotcom, hurtige, iandunn, ircrash, ironpaperweight, iseulde, Japh, jaredcobb, JDGrimes, jdolan, jdoubleu, jeremyfelt, jimt, jjeaton, jmusal, jnylen0, johanmynhardt, johnbillion, jonathanbardo, jorbin, joshkadis, JPry, jshreve, jtsternberg, JustinSainton, kacperszurek, kadamwhite, kalenjohnson, kellbot, kjbenk, kokarn, krogsgard, kuchenundkakao, kuldipem, kwight, lgedeon, lukepettway, mantismamita, markoheijnen, matrixik, mattheu, mauteri, maxcutler, mayukojpn, michael-arestad, miyauchi, mjbanks, modemlooper, mrbobbybryant, NateWr, nathanrice, netweb, NikV, nullvariable, oskosk, oso96_2000, oxymoron, pcfreak30, pento, peterwilsoncc, Pezzab, phh, pippinsplugins, pjgalbraith, pkevan, pollyplummer, pushred, quasel, QWp6t, schlessera, schrapel, Shelob9, shprink, simonlampen, Soean, solal, tapsboy, tfrommen, tharsheblows, thenbrent, tierra, tlovett1, tnegri, tobych, Toddses, toro_unit, traversal, vanillalounge, vishalkakadiya, wanecek, web2style, webbgaraget, websupporter, westonruter, whyisjake, wonderboymusic, wpsmith, xknown, zyphonic.
Fixes #38373.
Built from https://develop.svn.wordpress.org/trunk@38832
git-svn-id: http://core.svn.wordpress.org/trunk@38775 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-19 22:55:32 -04:00
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-settings-controller.php' );
|
2018-12-11 22:33:24 -05:00
|
|
|
require( ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-themes-controller.php' );
|
REST API: Introduce the Content API endpoints.
REST API endpoints for your WordPress content. These endpoints provide machine-readable external access to your WordPress site with a clear, standards-driven interface, allowing new and innovative apps for interacting with your site. These endpoints support all of the following:
- Posts: Read and write access to all post data, for all types of post-based data, including pages and media.
- Comments: Read and write access to all comment data. This includes pingbacks and trackbacks.
- Terms: Read and write access to all term data.
- Users: Read and write access to all user data. This includes public access to some data for post authors.
- Meta: Read and write access to metadata for posts, comments, terms, and users, on an opt-in basis from plugins.
- Settings: Read and write access to settings, on an opt-in basis from plugins and core. This enables API management of key site content values that are technically stored in options, such as site title and byline.
Love your REST API, WordPress! The infrastructure says, "Let's do lunch!" but the content API endpoints say, "You're paying!"
Props rmccue, rachelbaker, danielbachhuber, joehoyle, adamsilverstein, afurculita, ahmadawais, airesvsg, alisspers, antisilent, apokalyptik, artoliukkonen, attitude, boonebgorges, bradyvercher, brianhogg, caseypatrickdriscoll, chopinbach, chredd, christianesperar, chrisvanpatten, claudiolabarbera, claudiosmweb, cmmarslender, codebykat, coderkevin, codfish, codonnell822, daggerhart, danielpunkass, davidbhayes, delphinus, desrosj, dimadin, dotancohen, DrewAPicture, Dudo1985, duncanjbrown, eherman24, eivhyl, eliorivero, elyobo, en-alis, ericandrewlewis, ericpedia, evansobkowicz, fjarrett, frozzare, georgestephanis, greatislander, guavaworks, hideokamoto, hkdobrev, hubdotcom, hurtige, iandunn, ircrash, ironpaperweight, iseulde, Japh, jaredcobb, JDGrimes, jdolan, jdoubleu, jeremyfelt, jimt, jjeaton, jmusal, jnylen0, johanmynhardt, johnbillion, jonathanbardo, jorbin, joshkadis, JPry, jshreve, jtsternberg, JustinSainton, kacperszurek, kadamwhite, kalenjohnson, kellbot, kjbenk, kokarn, krogsgard, kuchenundkakao, kuldipem, kwight, lgedeon, lukepettway, mantismamita, markoheijnen, matrixik, mattheu, mauteri, maxcutler, mayukojpn, michael-arestad, miyauchi, mjbanks, modemlooper, mrbobbybryant, NateWr, nathanrice, netweb, NikV, nullvariable, oskosk, oso96_2000, oxymoron, pcfreak30, pento, peterwilsoncc, Pezzab, phh, pippinsplugins, pjgalbraith, pkevan, pollyplummer, pushred, quasel, QWp6t, schlessera, schrapel, Shelob9, shprink, simonlampen, Soean, solal, tapsboy, tfrommen, tharsheblows, thenbrent, tierra, tlovett1, tnegri, tobych, Toddses, toro_unit, traversal, vanillalounge, vishalkakadiya, wanecek, web2style, webbgaraget, websupporter, westonruter, whyisjake, wonderboymusic, wpsmith, xknown, zyphonic.
Fixes #38373.
Built from https://develop.svn.wordpress.org/trunk@38832
git-svn-id: http://core.svn.wordpress.org/trunk@38775 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2016-10-19 22:55:32 -04:00
|
|
|
require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-meta-fields.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-comment-meta-fields.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-post-meta-fields.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-term-meta-fields.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/fields/class-wp-rest-user-meta-fields.php' );
|
2018-12-13 04:38:25 -05:00
|
|
|
require( ABSPATH . WPINC . '/rest-api/search/class-wp-rest-search-handler.php' );
|
|
|
|
require( ABSPATH . WPINC . '/rest-api/search/class-wp-rest-post-search-handler.php' );
|
2018-12-13 04:44:23 -05:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-block-type.php' );
|
2019-09-14 14:21:54 -04:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-block-styles-registry.php' );
|
2018-12-13 04:44:23 -05:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-block-type-registry.php' );
|
2018-12-13 12:40:39 -05:00
|
|
|
require( ABSPATH . WPINC . '/class-wp-block-parser.php' );
|
2018-12-13 04:44:23 -05:00
|
|
|
require( ABSPATH . WPINC . '/blocks.php' );
|
2018-12-13 17:22:38 -05:00
|
|
|
require( ABSPATH . WPINC . '/blocks/archives.php' );
|
|
|
|
require( ABSPATH . WPINC . '/blocks/block.php' );
|
2019-03-07 04:09:59 -05:00
|
|
|
require( ABSPATH . WPINC . '/blocks/calendar.php' );
|
2018-12-13 17:22:38 -05:00
|
|
|
require( ABSPATH . WPINC . '/blocks/categories.php' );
|
|
|
|
require( ABSPATH . WPINC . '/blocks/latest-comments.php' );
|
|
|
|
require( ABSPATH . WPINC . '/blocks/latest-posts.php' );
|
2019-03-07 04:09:59 -05:00
|
|
|
require( ABSPATH . WPINC . '/blocks/rss.php' );
|
|
|
|
require( ABSPATH . WPINC . '/blocks/search.php' );
|
2018-12-13 17:22:38 -05:00
|
|
|
require( ABSPATH . WPINC . '/blocks/shortcode.php' );
|
2019-03-07 04:09:59 -05:00
|
|
|
require( ABSPATH . WPINC . '/blocks/tag-cloud.php' );
|
2013-10-24 18:58:23 -04:00
|
|
|
|
2016-08-26 05:53:28 -04:00
|
|
|
$GLOBALS['wp_embed'] = new WP_Embed();
|
|
|
|
|
2013-10-24 18:58:23 -04: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-10 18:00:15 -05:00
|
|
|
$GLOBALS['wp_plugin_paths'] = array();
|
|
|
|
|
2013-10-24 18:58:23 -04:00
|
|
|
// Load must-use plugins.
|
|
|
|
foreach ( wp_get_mu_plugins() as $mu_plugin ) {
|
|
|
|
include_once( $mu_plugin );
|
2018-12-19 19:52:48 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires once a single must-use plugin has loaded.
|
|
|
|
*
|
|
|
|
* @since 5.1.0
|
|
|
|
*
|
2019-01-22 22:39:51 -05:00
|
|
|
* @param string $mu_plugin Full path to the plugin's main file.
|
2018-12-19 19:52:48 -05:00
|
|
|
*/
|
|
|
|
do_action( 'mu_plugin_loaded', $mu_plugin );
|
2013-10-24 18:58:23 -04:00
|
|
|
}
|
|
|
|
unset( $mu_plugin );
|
|
|
|
|
|
|
|
// Load network activated plugins.
|
|
|
|
if ( is_multisite() ) {
|
2015-08-25 16:28:22 -04:00
|
|
|
foreach ( wp_get_active_network_plugins() as $network_plugin ) {
|
2014-02-10 18:00:15 -05:00
|
|
|
wp_register_plugin_realpath( $network_plugin );
|
2013-10-24 18:58:23 -04:00
|
|
|
include_once( $network_plugin );
|
2018-12-19 19:52:48 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires once a single network-activated plugin has loaded.
|
|
|
|
*
|
|
|
|
* @since 5.1.0
|
|
|
|
*
|
2019-01-22 22:39:51 -05:00
|
|
|
* @param string $network_plugin Full path to the plugin's main file.
|
2018-12-19 19:52:48 -05:00
|
|
|
*/
|
|
|
|
do_action( 'network_plugin_loaded', $network_plugin );
|
2013-10-24 18:58:23 -04:00
|
|
|
}
|
|
|
|
unset( $network_plugin );
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires once all must-use and network-activated plugins have loaded.
|
|
|
|
*
|
|
|
|
* @since 2.8.0
|
|
|
|
*/
|
|
|
|
do_action( 'muplugins_loaded' );
|
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( is_multisite() ) {
|
|
|
|
ms_cookie_constants();
|
|
|
|
}
|
2013-10-24 18:58:23 -04:00
|
|
|
|
2015-01-05 20:57:22 -05:00
|
|
|
// Define constants after multisite is loaded.
|
2013-10-24 18:58:23 -04: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();
|
|
|
|
|
File Editors: Introduce sandboxed live editing of PHP files with rollbacks for both themes and plugins.
* Edits to active plugins which cause PHP fatal errors will no longer auto-deactivate the plugin. Supersedes #39766.
* Introduce sandboxed PHP file edits for active themes, preventing accidental whitescreening of a user's site when introducing a fatal error.
* After writing a change to a PHP file for an active theme or plugin, perform loopback requests on the file editor admin screens and the homepage to check for fatal errors. If a fatal error is encountered, roll back the edited file and display the error to the user to fix and try again.
* Introduce a secure way to scrape PHP fatal errors from a site via `wp_start_scraping_edited_file_errors()` and `wp_finalize_scraping_edited_file_errors()`.
* Moves file modifications from `theme-editor.php` and `plugin-editor.php` to common `wp_edit_theme_plugin_file()` function.
* Refactor themes and plugin editors to submit file changes via Ajax instead of doing full page refreshes when JS is available.
* Use `get` method for theme/plugin dropdowns.
* Improve styling of plugin editors, including width of plugin/theme dropdowns.
* Improve notices API for theme/plugin editor JS component.
* Strip common base directory from plugin file list. See #24048.
* Factor out functions to list editable file types in `wp_get_theme_file_editable_extensions()` and `wp_get_plugin_file_editable_extensions()`.
* Scroll to line in editor that has linting error when attempting to save. See #41886.
* Add checkbox to dismiss lint errors to proceed with saving. See #41887.
* Only style the Update File button as disabled instead of actually disabling it for accessibility reasons.
* Ensure that value from CodeMirror is used instead of `textarea` when CodeMirror is present.
* Add "Are you sure?" check when leaving editor when there are unsaved changes.
Supersedes [41560].
See #39766, #24048, #41886.
Props westonruter, Clorith, melchoyce, johnbillion, jjj, jdgrimes, azaozz.
Fixes #21622, #41887.
Built from https://develop.svn.wordpress.org/trunk@41721
git-svn-id: http://core.svn.wordpress.org/trunk@41555 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2017-10-03 20:20:45 -04:00
|
|
|
wp_start_scraping_edited_file_errors();
|
|
|
|
|
2013-10-24 18:58:23 -04:00
|
|
|
// Register the default theme directory root
|
|
|
|
register_theme_directory( get_theme_root() );
|
|
|
|
|
Bootstrap/Load: Introduce a recovery mode for fixing fatal errors.
Using the new fatal handler introduced in [44962], an email is sent to the admin when a fatal error occurs. This email includes a secret link to enter recovery mode. When clicked, the link will be validated and on success a cookie will be placed on the client, enabling recovery mode for that user. This functionality is executed early before plugins and themes are loaded, in order to be unaffected by potential fatal errors these might be causing.
When in recovery mode, broken plugins and themes will be paused for that client, so that they are able to access the admin backend despite of these errors. They are notified about the broken extensions and the errors caused, and can then decide whether they would like to temporarily deactivate the extension or fix the problem and resume the extension.
A link in the admin bar allows the client to exit recovery mode.
Props timothyblynjacobs, afragen, flixos90, nerrad, miss_jwo, schlessera, spacedmonkey, swissspidy.
Fixes #46130, #44458.
Built from https://develop.svn.wordpress.org/trunk@44973
git-svn-id: http://core.svn.wordpress.org/trunk@44804 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-03-21 17:53:51 -04:00
|
|
|
if ( ! is_multisite() ) {
|
|
|
|
// Handle users requesting a recovery mode link and initiating recovery mode.
|
|
|
|
wp_recovery_mode()->initialize();
|
|
|
|
}
|
|
|
|
|
2013-10-24 18:58:23 -04:00
|
|
|
// Load active plugins.
|
2014-02-10 18:00:15 -05:00
|
|
|
foreach ( wp_get_active_and_valid_plugins() as $plugin ) {
|
|
|
|
wp_register_plugin_realpath( $plugin );
|
2013-10-24 18:58:23 -04:00
|
|
|
include_once( $plugin );
|
2018-12-19 19:52:48 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires once a single activated plugin has loaded.
|
|
|
|
*
|
|
|
|
* @since 5.1.0
|
|
|
|
*
|
2019-01-22 22:39:51 -05:00
|
|
|
* @param string $plugin Full path to the plugin's main file.
|
2018-12-19 19:52:48 -05:00
|
|
|
*/
|
|
|
|
do_action( 'plugin_loaded', $plugin );
|
2014-02-10 18:00:15 -05:00
|
|
|
}
|
2013-10-24 18:58:23 -04: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.
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( WP_CACHE && function_exists( 'wp_cache_postload' ) ) {
|
2013-10-24 18:58:23 -04:00
|
|
|
wp_cache_postload();
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2013-10-24 18:58:23 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires once activated plugins have loaded.
|
|
|
|
*
|
|
|
|
* Pluggable functions are also available at this point in the loading order.
|
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2013-10-24 18:58:23 -04: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
|
2017-11-30 18:11:00 -05:00
|
|
|
*
|
2019-08-03 21:59:56 -04:00
|
|
|
* @global WP_Query $wp_the_query WordPress Query object.
|
2013-10-24 18:58:23 -04:00
|
|
|
* @since 2.0.0
|
|
|
|
*/
|
2014-01-22 03:25:12 -05:00
|
|
|
$GLOBALS['wp_the_query'] = new WP_Query();
|
2013-10-24 18:58:23 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Holds the reference to @see $wp_the_query
|
|
|
|
* Use this global for WordPress queries
|
2017-11-30 18:11:00 -05:00
|
|
|
*
|
2019-08-03 21:59:56 -04:00
|
|
|
* @global WP_Query $wp_query WordPress Query object.
|
2013-10-24 18:58:23 -04:00
|
|
|
* @since 1.5.0
|
|
|
|
*/
|
2014-01-22 03:25:12 -05:00
|
|
|
$GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];
|
2013-10-24 18:58:23 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Holds the WordPress Rewrite object for creating pretty URLs
|
2017-11-30 18:11:00 -05:00
|
|
|
*
|
2019-08-03 21:19:56 -04:00
|
|
|
* @global WP_Rewrite $wp_rewrite WordPress rewrite component.
|
2013-10-24 18:58:23 -04:00
|
|
|
* @since 1.5.0
|
|
|
|
*/
|
|
|
|
$GLOBALS['wp_rewrite'] = new WP_Rewrite();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* WordPress Object
|
2017-11-30 18:11:00 -05:00
|
|
|
*
|
2019-08-03 21:28:55 -04:00
|
|
|
* @global WP $wp Current WordPress environment instance.
|
2013-10-24 18:58:23 -04:00
|
|
|
* @since 2.0.0
|
|
|
|
*/
|
2014-01-22 03:25:12 -05:00
|
|
|
$GLOBALS['wp'] = new WP();
|
2013-10-24 18:58:23 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* WordPress Widget Factory Object
|
2017-11-30 18:11:00 -05:00
|
|
|
*
|
2015-10-10 11:45:25 -04:00
|
|
|
* @global WP_Widget_Factory $wp_widget_factory
|
2013-10-24 18:58:23 -04:00
|
|
|
* @since 2.8.0
|
|
|
|
*/
|
|
|
|
$GLOBALS['wp_widget_factory'] = new WP_Widget_Factory();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* WordPress User Roles
|
2017-11-30 18:11:00 -05:00
|
|
|
*
|
2019-08-03 21:12:56 -04:00
|
|
|
* @global WP_Roles $wp_roles WordPress role management object.
|
2013-10-24 18:58:23 -04: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.
|
2017-11-30 18:11:00 -05:00
|
|
|
wp_templating_constants();
|
2013-10-24 18:58:23 -04:00
|
|
|
|
|
|
|
// Load the default text localization domain.
|
|
|
|
load_default_textdomain();
|
|
|
|
|
2017-11-30 18:11:00 -05:00
|
|
|
$locale = get_locale();
|
2013-10-24 18:58:23 -04:00
|
|
|
$locale_file = WP_LANG_DIR . "/$locale.php";
|
2017-11-30 18:11:00 -05:00
|
|
|
if ( ( 0 === validate_file( $locale ) ) && is_readable( $locale_file ) ) {
|
2013-10-24 18:58:23 -04:00
|
|
|
require( $locale_file );
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2013-10-24 18:58:23 -04:00
|
|
|
unset( $locale_file );
|
|
|
|
|
|
|
|
/**
|
|
|
|
* WordPress Locale object for loading locale domain date and various strings.
|
2017-11-30 18:11:00 -05:00
|
|
|
*
|
2019-08-03 21:46:55 -04:00
|
|
|
* @global WP_Locale $wp_locale WordPress date and time locale object.
|
2013-10-24 18:58:23 -04:00
|
|
|
* @since 2.1.0
|
|
|
|
*/
|
|
|
|
$GLOBALS['wp_locale'] = new WP_Locale();
|
|
|
|
|
2016-10-26 11:36:31 -04:00
|
|
|
/**
|
|
|
|
* WordPress Locale Switcher object for switching locales.
|
|
|
|
*
|
|
|
|
* @since 4.7.0
|
|
|
|
*
|
|
|
|
* @global WP_Locale_Switcher $wp_locale_switcher WordPress locale switcher object.
|
|
|
|
*/
|
|
|
|
$GLOBALS['wp_locale_switcher'] = new WP_Locale_Switcher();
|
|
|
|
$GLOBALS['wp_locale_switcher']->init();
|
|
|
|
|
2013-10-24 18:58:23 -04:00
|
|
|
// Load the functions for the active theme, for both parent and child theme if applicable.
|
Bootstrap/Load: Introduce fatal error recovery mechanism allowing users to still log in to their admin dashboard.
This changeset introduces a `WP_Shutdown_Handler` class that detects fatal errors and which extension (plugin or theme) causes them. Such an error is then recorded, and an error message is displayed. Subsequently, in certain protected areas, for example the admin, the broken extension will be paused, ensuring that the website is still usable in the respective area. The major benefit is that this mechanism allows site owners to still log in to their website, to fix the problem by either disabling the extension or solving the bug and then resuming the extension.
Extensions are only paused in certain designated areas. The frontend for example stays unaffected, as it is impossible to know what pausing the extension would cause to be missing, so it might be preferrable to clearly see that the website is temporarily not accessible instead.
The fatal error recovery is especially important in scope of encouraging the switch to a maintained PHP version, as not necessarily every WordPress extension is compatible with all PHP versions. If problems occur now, non-technical site owners that do not have immediate access to the codebase are not locked out of their site and can at least temporarily solve the problem quickly.
Websites that have custom requirements in that regard can implement their own shutdown handler by adding a `shutdown-handler.php` drop-in that returns the handler instance to use, which must be based on a class that inherits `WP_Shutdown_Handler`. That handler will then be used in place of the default one.
Websites that would like to modify specifically the error template displayed in the frontend can add a `php-error.php` drop-in that works similarly to the existing `db-error.php` drop-in.
Props afragen, bradleyt, flixos90, ocean90, schlessera, SergeyBiryukov, spacedmonkey.
Fixes #44458.
Built from https://develop.svn.wordpress.org/trunk@44524
git-svn-id: http://core.svn.wordpress.org/trunk@44355 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-01-09 15:05:49 -05:00
|
|
|
foreach ( wp_get_active_and_valid_themes() as $theme ) {
|
|
|
|
if ( file_exists( $theme . '/functions.php' ) ) {
|
|
|
|
include $theme . '/functions.php';
|
2017-11-30 18:11:00 -05:00
|
|
|
}
|
2013-10-24 18:58:23 -04:00
|
|
|
}
|
Bootstrap/Load: Introduce fatal error recovery mechanism allowing users to still log in to their admin dashboard.
This changeset introduces a `WP_Shutdown_Handler` class that detects fatal errors and which extension (plugin or theme) causes them. Such an error is then recorded, and an error message is displayed. Subsequently, in certain protected areas, for example the admin, the broken extension will be paused, ensuring that the website is still usable in the respective area. The major benefit is that this mechanism allows site owners to still log in to their website, to fix the problem by either disabling the extension or solving the bug and then resuming the extension.
Extensions are only paused in certain designated areas. The frontend for example stays unaffected, as it is impossible to know what pausing the extension would cause to be missing, so it might be preferrable to clearly see that the website is temporarily not accessible instead.
The fatal error recovery is especially important in scope of encouraging the switch to a maintained PHP version, as not necessarily every WordPress extension is compatible with all PHP versions. If problems occur now, non-technical site owners that do not have immediate access to the codebase are not locked out of their site and can at least temporarily solve the problem quickly.
Websites that have custom requirements in that regard can implement their own shutdown handler by adding a `shutdown-handler.php` drop-in that returns the handler instance to use, which must be based on a class that inherits `WP_Shutdown_Handler`. That handler will then be used in place of the default one.
Websites that would like to modify specifically the error template displayed in the frontend can add a `php-error.php` drop-in that works similarly to the existing `db-error.php` drop-in.
Props afragen, bradleyt, flixos90, ocean90, schlessera, SergeyBiryukov, spacedmonkey.
Fixes #44458.
Built from https://develop.svn.wordpress.org/trunk@44524
git-svn-id: http://core.svn.wordpress.org/trunk@44355 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-01-09 15:05:49 -05:00
|
|
|
unset( $theme );
|
2013-10-24 18:58:23 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Fires after the theme is loaded.
|
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*/
|
|
|
|
do_action( 'after_setup_theme' );
|
|
|
|
|
|
|
|
// Set up current user.
|
2014-01-22 09:48:11 -05:00
|
|
|
$GLOBALS['wp']->init();
|
2013-10-24 18:58:23 -04: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 13:07:28 -04:00
|
|
|
* to load on the {@see 'init'} hook that follows (e.g. widgets), and many plugins instantiate
|
2013-10-24 18:58:23 -04:00
|
|
|
* themselves on it for all sorts of reasons (e.g. they need a user, a taxonomy, etc.).
|
|
|
|
*
|
2016-05-23 13:07:28 -04:00
|
|
|
* If you wish to plug an action once WP is loaded, use the {@see 'wp_loaded'} hook below.
|
2013-10-24 18:58:23 -04:00
|
|
|
*
|
2013-10-30 10:39:10 -04:00
|
|
|
* @since 1.5.0
|
2013-10-24 18:58:23 -04:00
|
|
|
*/
|
|
|
|
do_action( 'init' );
|
|
|
|
|
|
|
|
// Check site status
|
|
|
|
if ( is_multisite() ) {
|
2019-07-01 04:27:58 -04:00
|
|
|
$file = ms_site_check();
|
|
|
|
if ( true !== $file ) {
|
2013-10-24 18:58:23 -04:00
|
|
|
require( $file );
|
|
|
|
die();
|
|
|
|
}
|
2017-11-30 18:11:00 -05:00
|
|
|
unset( $file );
|
2013-10-24 18:58:23 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This hook is fired once WP, all plugins, and the theme are fully loaded and instantiated.
|
|
|
|
*
|
2016-07-09 20:51:30 -04:00
|
|
|
* Ajax requests should use wp-admin/admin-ajax.php. admin-ajax.php can handle requests for
|
2013-10-24 18:58:23 -04:00
|
|
|
* users not logged in.
|
|
|
|
*
|
2015-04-12 17:29:32 -04:00
|
|
|
* @link https://codex.wordpress.org/AJAX_in_Plugins
|
2013-10-24 18:58:23 -04:00
|
|
|
*
|
|
|
|
* @since 3.0.0
|
|
|
|
*/
|
|
|
|
do_action( 'wp_loaded' );
|