diff --git a/src/index.php b/src/index.php
index 544acab805b09..e3b9599e832d3 100644
--- a/src/index.php
+++ b/src/index.php
@@ -11,16 +11,19 @@
define( 'ABSPATH', __DIR__ . '/' );
}
-/*
- * Load the actual index.php file if the assets were already built.
- * Note: WPINC is not defined yet, it is defined later in wp-settings.php.
- */
-if ( file_exists( ABSPATH . 'wp-includes/js/jquery/jquery.js' ) && is_dir( ABSPATH . 'wp-includes/build' ) ) {
+if ( ! defined( 'WPINC' ) ) {
+ define( 'WPINC', 'wp-includes' );
+}
+
+require_once ABSPATH . WPINC . '/class-wp-autoload.php';
+WP_Autoload::register();
+
+// Load the actual index.php file if the assets were already built.
+if ( file_exists( ABSPATH . WPINC . '/js/jquery/jquery.js' ) && is_dir( ABSPATH . WPINC . '/build' ) ) {
require_once ABSPATH . '_index.php';
return;
}
-define( 'WPINC', 'wp-includes' );
require_once ABSPATH . WPINC . '/version.php';
require_once ABSPATH . WPINC . '/compat.php';
require_once ABSPATH . WPINC . '/load.php';
diff --git a/src/wp-admin/custom-background.php b/src/wp-admin/custom-background.php
index bbd56bdb6cee2..43fded4ba11eb 100644
--- a/src/wp-admin/custom-background.php
+++ b/src/wp-admin/custom-background.php
@@ -15,6 +15,3 @@
}
_deprecated_file( basename( __FILE__ ), '5.3.0', 'wp-admin/includes/class-custom-background.php' );
-
-/** Custom_Background class */
-require_once ABSPATH . 'wp-admin/includes/class-custom-background.php';
diff --git a/src/wp-admin/custom-header.php b/src/wp-admin/custom-header.php
index 31c78dcb5b372..544b85acd6f42 100644
--- a/src/wp-admin/custom-header.php
+++ b/src/wp-admin/custom-header.php
@@ -15,6 +15,3 @@
}
_deprecated_file( basename( __FILE__ ), '5.3.0', 'wp-admin/includes/class-custom-image-header.php' );
-
-/** Custom_Image_Header class */
-require_once ABSPATH . 'wp-admin/includes/class-custom-image-header.php';
diff --git a/src/wp-admin/includes/admin.php b/src/wp-admin/includes/admin.php
index ce2ec0c68b855..455448e23cd61 100644
--- a/src/wp-admin/includes/admin.php
+++ b/src/wp-admin/includes/admin.php
@@ -42,9 +42,6 @@
/** WordPress Misc Administration API */
require_once ABSPATH . 'wp-admin/includes/misc.php';
-/** WordPress Misc Administration API */
-require_once ABSPATH . 'wp-admin/includes/class-wp-privacy-policy-content.php';
-
/** WordPress Options Administration API */
require_once ABSPATH . 'wp-admin/includes/options.php';
@@ -55,7 +52,6 @@
require_once ABSPATH . 'wp-admin/includes/post.php';
/** WordPress Administration Screen API */
-require_once ABSPATH . 'wp-admin/includes/class-wp-screen.php';
require_once ABSPATH . 'wp-admin/includes/screen.php';
/** WordPress Taxonomy Administration API */
@@ -65,8 +61,6 @@
require_once ABSPATH . 'wp-admin/includes/template.php';
/** WordPress List Table Administration API and base class */
-require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
-require_once ABSPATH . 'wp-admin/includes/class-wp-list-table-compat.php';
require_once ABSPATH . 'wp-admin/includes/list-table.php';
/** WordPress Theme Administration API */
@@ -75,18 +69,9 @@
/** WordPress Privacy Functions */
require_once ABSPATH . 'wp-admin/includes/privacy-tools.php';
-/** WordPress Privacy List Table classes. */
-// Previously in wp-admin/includes/user.php. Need to be loaded for backward compatibility.
-require_once ABSPATH . 'wp-admin/includes/class-wp-privacy-requests-table.php';
-require_once ABSPATH . 'wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php';
-require_once ABSPATH . 'wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php';
-
/** WordPress User Administration API */
require_once ABSPATH . 'wp-admin/includes/user.php';
-/** WordPress Site Icon API */
-require_once ABSPATH . 'wp-admin/includes/class-wp-site-icon.php';
-
/** WordPress Update Administration API */
require_once ABSPATH . 'wp-admin/includes/update.php';
diff --git a/src/wp-admin/includes/ajax-actions.php b/src/wp-admin/includes/ajax-actions.php
index 2af08fba70af9..72fb819ba598e 100644
--- a/src/wp-admin/includes/ajax-actions.php
+++ b/src/wp-admin/includes/ajax-actions.php
@@ -366,8 +366,6 @@ function wp_ajax_autocomplete_user() {
* @since 4.8.0
*/
function wp_ajax_get_community_events() {
- require_once ABSPATH . 'wp-admin/includes/class-wp-community-events.php';
-
check_ajax_referer( 'community_events' );
$search = isset( $_POST['location'] ) ? wp_unslash( $_POST['location'] ) : '';
@@ -1944,10 +1942,6 @@ function wp_ajax_wp_link_ajax() {
$args['pagenum'] = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1;
- if ( ! class_exists( '_WP_Editors', false ) ) {
- require ABSPATH . WPINC . '/class-wp-editor.php';
- }
-
$results = _WP_Editors::wp_link_query( $args );
if ( ! isset( $results ) ) {
@@ -4035,7 +4029,6 @@ function wp_ajax_crop_image() {
switch ( $context ) {
case 'site-icon':
- require_once ABSPATH . 'wp-admin/includes/class-wp-site-icon.php';
$wp_site_icon = new WP_Site_Icon();
// Skip creating a new attachment if the attachment is a Site Icon.
@@ -4186,7 +4179,6 @@ function wp_ajax_install_theme() {
wp_send_json_error( $status );
}
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
require_once ABSPATH . 'wp-admin/includes/theme.php';
$api = themes_api(
@@ -4318,8 +4310,6 @@ function wp_ajax_update_theme() {
$status['oldVersion'] = $theme->get( 'Version' );
}
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
-
$current = get_site_transient( 'update_themes' );
if ( empty( $current ) ) {
wp_update_themes();
@@ -4479,7 +4469,6 @@ function wp_ajax_install_plugin() {
wp_send_json_error( $status );
}
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
$api = plugins_api(
@@ -4651,8 +4640,6 @@ function wp_ajax_update_plugin() {
$status['oldVersion'] = sprintf( __( 'Version %s' ), $plugin_data['Version'] );
}
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
-
wp_update_plugins();
$skin = new WP_Ajax_Upgrader_Skin();
@@ -5380,10 +5367,6 @@ function wp_ajax_health_check_dotorg_communication() {
wp_send_json_error();
}
- if ( ! class_exists( 'WP_Site_Health' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php';
- }
-
$site_health = WP_Site_Health::get_instance();
wp_send_json_success( $site_health->get_test_dotorg_communication() );
}
@@ -5413,10 +5396,6 @@ function wp_ajax_health_check_background_updates() {
wp_send_json_error();
}
- if ( ! class_exists( 'WP_Site_Health' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php';
- }
-
$site_health = WP_Site_Health::get_instance();
wp_send_json_success( $site_health->get_test_background_updates() );
}
@@ -5446,10 +5425,6 @@ function wp_ajax_health_check_loopback_requests() {
wp_send_json_error();
}
- if ( ! class_exists( 'WP_Site_Health' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php';
- }
-
$site_health = WP_Site_Health::get_instance();
wp_send_json_success( $site_health->get_test_loopback_requests() );
}
@@ -5496,10 +5471,6 @@ function wp_ajax_health_check_get_sizes() {
wp_send_json_error();
}
- if ( ! class_exists( 'WP_Debug_Data' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-debug-data.php';
- }
-
$sizes_data = WP_Debug_Data::get_sizes();
$all_sizes = array( 'raw' => 0 );
diff --git a/src/wp-admin/includes/class-ftp.php b/src/wp-admin/includes/class-ftp.php
index 20adc9f6bb39e..f76c3038c9074 100644
--- a/src/wp-admin/includes/class-ftp.php
+++ b/src/wp-admin/includes/class-ftp.php
@@ -913,8 +913,6 @@ function PopError(){
$mod_sockets = extension_loaded( 'sockets' );
}
-require_once __DIR__ . "/class-ftp-" . ( $mod_sockets ? "sockets" : "pure" ) . ".php";
-
if ( $mod_sockets ) {
class ftp extends ftp_sockets {}
} else {
diff --git a/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php b/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php
index cc665ad9bf7b4..896d377a186a9 100644
--- a/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php
+++ b/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php
@@ -32,11 +32,6 @@ public function __construct( $opt = '' ) {
$this->method = 'ftpsockets';
$this->errors = new WP_Error();
- // Check if possible to use ftp functions.
- if ( ! require_once ABSPATH . 'wp-admin/includes/class-ftp.php' ) {
- return;
- }
-
$this->ftp = new ftp();
if ( empty( $opt['port'] ) ) {
diff --git a/src/wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php b/src/wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php
index aa68c84649e2f..06fb55dabe77d 100644
--- a/src/wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php
+++ b/src/wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php
@@ -7,10 +7,6 @@
* @since 4.9.6
*/
-if ( ! class_exists( 'WP_Privacy_Requests_Table' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-privacy-requests-table.php';
-}
-
/**
* WP_Privacy_Data_Export_Requests_Table class.
*
diff --git a/src/wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php b/src/wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php
index 716535160f12d..3ab7f6f182d3a 100644
--- a/src/wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php
+++ b/src/wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php
@@ -7,10 +7,6 @@
* @since 4.9.6
*/
-if ( ! class_exists( 'WP_Privacy_Requests_Table' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-privacy-requests-table.php';
-}
-
/**
* WP_Privacy_Data_Removal_Requests_List_Table class.
*
diff --git a/src/wp-admin/includes/class-wp-site-health-auto-updates.php b/src/wp-admin/includes/class-wp-site-health-auto-updates.php
index 1904acd4e08c5..4828feef8c7ba 100644
--- a/src/wp-admin/includes/class-wp-site-health-auto-updates.php
+++ b/src/wp-admin/includes/class-wp-site-health-auto-updates.php
@@ -9,15 +9,6 @@
#[AllowDynamicProperties]
class WP_Site_Health_Auto_Updates {
- /**
- * WP_Site_Health_Auto_Updates constructor.
- *
- * @since 5.2.0
- */
- public function __construct() {
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
- }
-
/**
* Runs tests to determine if auto-updates can run.
@@ -144,10 +135,6 @@ public function test_filters_automatic_updater_disabled() {
* @return array|false The test results if auto-updates are disabled, false otherwise.
*/
public function test_wp_automatic_updates_disabled() {
- if ( ! class_exists( 'WP_Automatic_Updater' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-automatic-updater.php';
- }
-
$auto_updates = new WP_Automatic_Updater();
if ( ! $auto_updates->is_disabled() ) {
diff --git a/src/wp-admin/includes/class-wp-site-health.php b/src/wp-admin/includes/class-wp-site-health.php
index 75e046ef8ffa7..ea5ab90f31ca6 100644
--- a/src/wp-admin/includes/class-wp-site-health.php
+++ b/src/wp-admin/includes/class-wp-site-health.php
@@ -1753,10 +1753,6 @@ public function get_test_background_updates() {
'test' => 'background_updates',
);
- if ( ! class_exists( 'WP_Site_Health_Auto_Updates' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-site-health-auto-updates.php';
- }
-
/*
* Run the auto-update tests in a separate class,
* as there are many considerations to be made.
@@ -2386,6 +2382,77 @@ public function get_test_file_uploads() {
return $result;
}
+ /**
+ * Tests if any of the WordPress Core classes are overridden.
+ *
+ * @since 6.6.0
+ *
+ * @return array
+ */
+ public static function get_test_core_classes_paths() {
+ $overridden_classes = array();
+ /*
+ * Bypass check for WP_Object_Cache.
+ *
+ * It is intended that persistent caching plugins replace the core version
+ * of WP_Object_Cache with their own version so it shouldn't be reported
+ * as an error in site health.
+ */
+ $wp_core_classes = WP_Autoload::CLASSES_PATHS;
+ unset( $wp_core_classes['wp_object_cache'] );
+ foreach ( $wp_core_classes as $class_name => $class_path ) {
+ $default_path = ABSPATH . $class_path;
+
+ /*
+ * Init a Reflection class to get the real path of the class.
+ * This is performed inside an output buffer to avoid any errors
+ * that might be thrown by the ReflectionClass constructor.
+ */
+ ob_start();
+ $reflection = new \ReflectionClass( $class_name );
+ ob_end_clean();
+
+ if ( $default_path !== $reflection->getFileName() ) {
+ $overridden_classes[ $reflection->getName() ] = $reflection->getFileName();
+ }
+ }
+
+ $result = array(
+ 'label' => __( 'All WordPress Core classes can be properly loaded' ),
+ 'status' => 'good',
+ 'badge' => array(
+ 'label' => __( 'Security' ),
+ 'color' => 'blue',
+ ),
+ 'description' => sprintf(
+ '
%s
',
+ __( 'Plugins and Themes should not override the default WordPress Core classes, as that might lead to unexpected side-effects on your site.' )
+ ),
+ 'actions' => '',
+ 'test' => 'core_classes_paths',
+ );
+
+ if ( ! empty( $overridden_classes ) ) {
+ $result['status'] = 'critical';
+ $result['label'] = __( 'WordPress Core classes are being overridden' );
+ $result['description'] .= sprintf(
+ '%s
',
+ __( 'The following WordPress Core classes are being overridden:' )
+ );
+
+ $result['description'] .= '';
+ foreach ( $overridden_classes as $class_name => $class_path ) {
+ $result['description'] .= '';
+ $result['description'] .= '' . esc_html( $class_name ) . ' | ';
+ $result['description'] .= '' . esc_html( $class_path ) . ' | ';
+ $result['description'] .= '
';
+ }
+ $result['description'] .= '
';
+ }
+
+ return $result;
+ }
+
/**
* Tests if the Authorization header has the expected values.
*
@@ -3002,6 +3069,12 @@ public static function get_tests() {
);
}
+ // Check for Core classes being overridden.
+ $tests['direct']['core_classes_paths'] = array(
+ 'label' => __( 'Core classes paths' ),
+ 'test' => 'core_classes_paths',
+ );
+
/**
* Filters which site status tests are run on a site.
*
diff --git a/src/wp-admin/includes/class-wp-upgrader-skins.php b/src/wp-admin/includes/class-wp-upgrader-skins.php
index 636ce1838cdc3..9e2f197c307e6 100644
--- a/src/wp-admin/includes/class-wp-upgrader-skins.php
+++ b/src/wp-admin/includes/class-wp-upgrader-skins.php
@@ -9,36 +9,3 @@
*/
_deprecated_file( basename( __FILE__ ), '4.7.0', 'class-wp-upgrader.php' );
-
-/** WP_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader-skin.php';
-
-/** Plugin_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader-skin.php';
-
-/** Theme_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-theme-upgrader-skin.php';
-
-/** Bulk_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-bulk-upgrader-skin.php';
-
-/** Bulk_Plugin_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-bulk-plugin-upgrader-skin.php';
-
-/** Bulk_Theme_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-bulk-theme-upgrader-skin.php';
-
-/** Plugin_Installer_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-plugin-installer-skin.php';
-
-/** Theme_Installer_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-theme-installer-skin.php';
-
-/** Language_Pack_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-language-pack-upgrader-skin.php';
-
-/** Automatic_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-automatic-upgrader-skin.php';
-
-/** WP_Ajax_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php';
diff --git a/src/wp-admin/includes/class-wp-upgrader.php b/src/wp-admin/includes/class-wp-upgrader.php
index 695ce50bf0d7e..880f61f4ec4a2 100644
--- a/src/wp-admin/includes/class-wp-upgrader.php
+++ b/src/wp-admin/includes/class-wp-upgrader.php
@@ -9,39 +9,6 @@
* @since 2.8.0
*/
-/** WP_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader-skin.php';
-
-/** Plugin_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader-skin.php';
-
-/** Theme_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-theme-upgrader-skin.php';
-
-/** Bulk_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-bulk-upgrader-skin.php';
-
-/** Bulk_Plugin_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-bulk-plugin-upgrader-skin.php';
-
-/** Bulk_Theme_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-bulk-theme-upgrader-skin.php';
-
-/** Plugin_Installer_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-plugin-installer-skin.php';
-
-/** Theme_Installer_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-theme-installer-skin.php';
-
-/** Language_Pack_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-language-pack-upgrader-skin.php';
-
-/** Automatic_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-automatic-upgrader-skin.php';
-
-/** WP_Ajax_Upgrader_Skin class */
-require_once ABSPATH . 'wp-admin/includes/class-wp-ajax-upgrader-skin.php';
-
/**
* Core class used for upgrading/installing a local set of files via
* the Filesystem Abstraction classes from a Zip file.
@@ -1298,21 +1265,3 @@ public function delete_temp_backup( array $temp_backups = array() ) {
return $errors->has_errors() ? $errors : true;
}
}
-
-/** Plugin_Upgrader class */
-require_once ABSPATH . 'wp-admin/includes/class-plugin-upgrader.php';
-
-/** Theme_Upgrader class */
-require_once ABSPATH . 'wp-admin/includes/class-theme-upgrader.php';
-
-/** Language_Pack_Upgrader class */
-require_once ABSPATH . 'wp-admin/includes/class-language-pack-upgrader.php';
-
-/** Core_Upgrader class */
-require_once ABSPATH . 'wp-admin/includes/class-core-upgrader.php';
-
-/** File_Upload_Upgrader class */
-require_once ABSPATH . 'wp-admin/includes/class-file-upload-upgrader.php';
-
-/** WP_Automatic_Updater class */
-require_once ABSPATH . 'wp-admin/includes/class-wp-automatic-updater.php';
diff --git a/src/wp-admin/includes/dashboard.php b/src/wp-admin/includes/dashboard.php
index 778e3de40326b..2893e90007c15 100644
--- a/src/wp-admin/includes/dashboard.php
+++ b/src/wp-admin/includes/dashboard.php
@@ -56,9 +56,6 @@ function wp_dashboard_setup() {
// Site Health.
if ( current_user_can( 'view_site_health_checks' ) && ! is_network_admin() ) {
- if ( ! class_exists( 'WP_Site_Health' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php';
- }
WP_Site_Health::get_instance();
diff --git a/src/wp-admin/includes/deprecated.php b/src/wp-admin/includes/deprecated.php
index 86524fb897311..482c88e67cefb 100644
--- a/src/wp-admin/includes/deprecated.php
+++ b/src/wp-admin/includes/deprecated.php
@@ -769,9 +769,6 @@ function wp_tiny_mce( $teeny = false, $settings = false ) {
static $num = 1;
- if ( ! class_exists( '_WP_Editors', false ) )
- require_once ABSPATH . WPINC . '/class-wp-editor.php';
-
$editor_id = 'content' . $num++;
$set = array(
@@ -1165,7 +1162,6 @@ function wp_update_core($current, $feedback = '') {
if ( !empty($feedback) )
add_filter('update_feedback', $feedback);
- require ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$upgrader = new Core_Upgrader();
return $upgrader->upgrade($current);
@@ -1188,7 +1184,6 @@ function wp_update_plugin($plugin, $feedback = '') {
if ( !empty($feedback) )
add_filter('update_feedback', $feedback);
- require ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$upgrader = new Plugin_Upgrader();
return $upgrader->upgrade($plugin);
}
@@ -1210,7 +1205,6 @@ function wp_update_theme($theme, $feedback = '') {
if ( !empty($feedback) )
add_filter('update_feedback', $feedback);
- require ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$upgrader = new Theme_Upgrader();
return $upgrader->upgrade($theme);
}
diff --git a/src/wp-admin/includes/file.php b/src/wp-admin/includes/file.php
index 0c6d968ea02d3..4cdc0eea2ecce 100644
--- a/src/wp-admin/includes/file.php
+++ b/src/wp-admin/includes/file.php
@@ -1575,8 +1575,6 @@ function wp_zip_file_is_valid( $file ) {
}
// Fall through to PclZip if ZipArchive is not available, or encountered an error opening the file.
- require_once ABSPATH . 'wp-admin/includes/class-pclzip.php';
-
$archive = new PclZip( $file );
$archive_is_valid = is_array( $archive->properties() );
@@ -1871,8 +1869,6 @@ function _unzip_file_pclzip( $file, $to, $needed_dirs = array() ) {
mbstring_binary_safe_encoding();
- require_once ABSPATH . 'wp-admin/includes/class-pclzip.php';
-
$archive = new PclZip( $file );
$archive_files = $archive->extract( PCLZIP_OPT_EXTRACT_AS_STRING );
@@ -2170,8 +2166,6 @@ function move_dir( $from, $to, $overwrite = false ) {
function WP_Filesystem( $args = false, $context = false, $allow_relaxed_file_ownership = false ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
global $wp_filesystem;
- require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php';
-
$method = get_filesystem_method( $args, $context, $allow_relaxed_file_ownership );
if ( ! $method ) {
diff --git a/src/wp-admin/includes/import.php b/src/wp-admin/includes/import.php
index 530045894c745..93d7ea62db3d4 100644
--- a/src/wp-admin/includes/import.php
+++ b/src/wp-admin/includes/import.php
@@ -6,6 +6,13 @@
* @subpackage Administration
*/
+/*
+ * class-wp-importer.php is loaded explicitly here rather than via WP_Autoload
+ * because the file defines the global function get_cli_args() outside the class
+ * body, which must be available whenever the importer system is active.
+ */
+require_once ABSPATH . 'wp-admin/includes/class-wp-importer.php';
+
/**
* Retrieves the list of importers.
*
diff --git a/src/wp-admin/includes/list-table.php b/src/wp-admin/includes/list-table.php
index 1e2c190c80fe9..70208efbe51a3 100644
--- a/src/wp-admin/includes/list-table.php
+++ b/src/wp-admin/includes/list-table.php
@@ -21,34 +21,30 @@
function _get_list_table( $class_name, $args = array() ) {
$core_classes = array(
// Site Admin.
- 'WP_Posts_List_Table' => 'posts',
- 'WP_Media_List_Table' => 'media',
- 'WP_Terms_List_Table' => 'terms',
- 'WP_Users_List_Table' => 'users',
- 'WP_Comments_List_Table' => 'comments',
- 'WP_Post_Comments_List_Table' => array( 'comments', 'post-comments' ),
- 'WP_Links_List_Table' => 'links',
- 'WP_Plugin_Install_List_Table' => 'plugin-install',
- 'WP_Themes_List_Table' => 'themes',
- 'WP_Theme_Install_List_Table' => array( 'themes', 'theme-install' ),
- 'WP_Plugins_List_Table' => 'plugins',
- 'WP_Application_Passwords_List_Table' => 'application-passwords',
+ 'WP_Posts_List_Table',
+ 'WP_Media_List_Table',
+ 'WP_Terms_List_Table',
+ 'WP_Users_List_Table',
+ 'WP_Comments_List_Table',
+ 'WP_Post_Comments_List_Table',
+ 'WP_Links_List_Table',
+ 'WP_Plugin_Install_List_Table',
+ 'WP_Themes_List_Table',
+ 'WP_Theme_Install_List_Table',
+ 'WP_Plugins_List_Table',
+ 'WP_Application_Passwords_List_Table',
// Network Admin.
- 'WP_MS_Sites_List_Table' => 'ms-sites',
- 'WP_MS_Users_List_Table' => 'ms-users',
- 'WP_MS_Themes_List_Table' => 'ms-themes',
+ 'WP_MS_Sites_List_Table',
+ 'WP_MS_Users_List_Table',
+ 'WP_MS_Themes_List_Table',
// Privacy requests tables.
- 'WP_Privacy_Data_Export_Requests_List_Table' => 'privacy-data-export-requests',
- 'WP_Privacy_Data_Removal_Requests_List_Table' => 'privacy-data-removal-requests',
+ 'WP_Privacy_Data_Export_Requests_List_Table',
+ 'WP_Privacy_Data_Removal_Requests_List_Table',
);
- if ( isset( $core_classes[ $class_name ] ) ) {
- foreach ( (array) $core_classes[ $class_name ] as $required ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-' . $required . '-list-table.php';
- }
-
+ if ( in_array( $class_name, $core_classes ) ) {
if ( isset( $args['screen'] ) ) {
$args['screen'] = convert_to_screen( $args['screen'] );
} elseif ( isset( $GLOBALS['hook_suffix'] ) ) {
diff --git a/src/wp-admin/includes/nav-menu.php b/src/wp-admin/includes/nav-menu.php
index 70263a2034807..5cf3cf10be2fc 100644
--- a/src/wp-admin/includes/nav-menu.php
+++ b/src/wp-admin/includes/nav-menu.php
@@ -7,12 +7,6 @@
* @since 3.0.0
*/
-/** Walker_Nav_Menu_Edit class */
-require_once ABSPATH . 'wp-admin/includes/class-walker-nav-menu-edit.php';
-
-/** Walker_Nav_Menu_Checklist class */
-require_once ABSPATH . 'wp-admin/includes/class-walker-nav-menu-checklist.php';
-
/**
* Prints the appropriate response to a menu quick search.
*
diff --git a/src/wp-admin/includes/plugin.php b/src/wp-admin/includes/plugin.php
index 94d4a585a80f1..11cd52f557a7c 100644
--- a/src/wp-admin/includes/plugin.php
+++ b/src/wp-admin/includes/plugin.php
@@ -2432,11 +2432,6 @@ function wp_add_privacy_policy_content( $plugin_name, $policy_text ) {
);
return;
}
-
- if ( ! class_exists( 'WP_Privacy_Policy_Content' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-privacy-policy-content.php';
- }
-
WP_Privacy_Policy_Content::add( $plugin_name, $policy_text );
}
diff --git a/src/wp-admin/includes/template.php b/src/wp-admin/includes/template.php
index 6680bca89691a..c6487d45cbbe3 100644
--- a/src/wp-admin/includes/template.php
+++ b/src/wp-admin/includes/template.php
@@ -8,12 +8,6 @@
* @subpackage Administration
*/
-/** Walker_Category_Checklist class */
-require_once ABSPATH . 'wp-admin/includes/class-walker-category-checklist.php';
-
-/** WP_Internal_Pointers class */
-require_once ABSPATH . 'wp-admin/includes/class-wp-internal-pointers.php';
-
//
// Category Checklists.
//
diff --git a/src/wp-admin/includes/translation-install.php b/src/wp-admin/includes/translation-install.php
index 67609836b94a2..a53afcf639dd5 100644
--- a/src/wp-admin/includes/translation-install.php
+++ b/src/wp-admin/includes/translation-install.php
@@ -278,7 +278,6 @@ function wp_download_language_pack( $download ) {
}
$translation = (object) $translation;
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$skin = new Automatic_Upgrader_Skin();
$upgrader = new Language_Pack_Upgrader( $skin );
$translation->type = 'core';
@@ -304,7 +303,6 @@ function wp_can_install_language_pack() {
return false;
}
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$skin = new Automatic_Upgrader_Skin();
$upgrader = new Language_Pack_Upgrader( $skin );
$upgrader->init();
diff --git a/src/wp-admin/includes/update-core.php b/src/wp-admin/includes/update-core.php
index cfa1dfaddf610..ab188a3c5cba6 100644
--- a/src/wp-admin/includes/update-core.php
+++ b/src/wp-admin/includes/update-core.php
@@ -1104,6 +1104,9 @@ function update_core( $from, $to ) {
$_old_files = array_merge( $_old_files, array_values( $_old_requests_files ) );
_preload_old_requests_classes_and_interfaces( $to );
+ // Preload Core classes and interfaces to ensure the code is in memory if needed.
+ _preload_core_classes_and_interfaces();
+
/**
* Filters feedback messages displayed during the core update process.
*
@@ -1717,6 +1720,71 @@ function _preload_old_requests_classes_and_interfaces( $to ) {
}
}
+/**
+ * Preloads old classes and interfaces required for updating Core.
+ *
+ * This function preloads the old code into memory before the
+ * upgrade process deletes the files. These files are loaded into
+ * memory via an autoloader, meaning when a class or interface is needed
+ * WordPress Core could attempt to access code. If the file is not there,
+ * a fatal error could occur. If the file was replaced, the new code is not
+ * compatible with the old, resulting in a fatal error.
+ * Preloading ensures the code is in memory before the code is updated.
+ *
+ * @since 6.6.0
+ */
+function _preload_core_classes_and_interfaces() {
+ /*
+ * This function is called before the new core files are copied to ABSPATH,
+ * so class-wp-autoload.php may not exist yet when upgrading from an older
+ * version of WordPress that predates the autoloader. In that case the classes
+ * needed for the upgrade are already loaded into memory via the old bootstrap's
+ * explicit require calls, so no further preloading is needed.
+ */
+ $autoload_file = ABSPATH . WPINC . '/class-wp-autoload.php';
+ if ( ! file_exists( $autoload_file ) ) {
+ return;
+ }
+ require_once $autoload_file;
+
+ /*
+ * The classes to be preloaded.
+ * These are lowercased to match the format used in the autoloader.
+ */
+ $preload_classes = array(
+ 'core_upgrader',
+ 'automatic_upgrader_skin',
+ 'wp_upgrader_skin',
+ 'wp_upgrader',
+ 'wp_error',
+ 'wp_filesystem_base',
+ 'wp_filesystem_direct',
+ 'wp_filesystem_ftpext',
+ 'wp_filesystem_ftpsockets',
+ 'wp_filesystem_ssh2',
+ 'wpdb',
+ 'ftp',
+ 'ftp_base',
+ 'ftp_pure',
+ 'ftp_sockets',
+ );
+ foreach ( $preload_classes as $class_name ) {
+ /*
+ * Skip if it's already loaded.
+ * This should trigger the autoloader to load the file.
+ */
+ if ( class_exists( $class_name, true ) ) {
+ continue;
+ }
+ // Skip classes intentionally excluded from the classmap (e.g. wpdb).
+ if ( ! isset( WP_Autoload::CLASSES_PATHS[ $class_name ] ) ) {
+ continue;
+ }
+ // Load the file.
+ require_once ABSPATH . WP_Autoload::CLASSES_PATHS[ $class_name ];
+ }
+}
+
/**
* Redirect to the About WordPress page after a successful upgrade.
*
diff --git a/src/wp-admin/includes/update.php b/src/wp-admin/includes/update.php
index f5aeea835bd12..f61d51abc9433 100644
--- a/src/wp-admin/includes/update.php
+++ b/src/wp-admin/includes/update.php
@@ -97,8 +97,6 @@ function find_core_auto_update() {
return false;
}
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
-
$auto_update = false;
$upgrader = new WP_Automatic_Updater();
@@ -1042,10 +1040,6 @@ function wp_recovery_mode_nag() {
* @return bool True if auto-updates are enabled for `$type`, false otherwise.
*/
function wp_is_auto_update_enabled_for_type( $type ) {
- if ( ! class_exists( 'WP_Automatic_Updater' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-automatic-updater.php';
- }
-
$updater = new WP_Automatic_Updater();
$enabled = ! $updater->is_disabled();
diff --git a/src/wp-admin/includes/upgrade.php b/src/wp-admin/includes/upgrade.php
index 914113bde00d0..e89c4a29228b4 100644
--- a/src/wp-admin/includes/upgrade.php
+++ b/src/wp-admin/includes/upgrade.php
@@ -375,10 +375,6 @@ function wp_install_defaults( $user_id ) {
// Disable by default unless the suggested content is provided.
$privacy_policy_content = get_site_option( 'default_privacy_policy_content' );
} else {
- if ( ! class_exists( 'WP_Privacy_Policy_Content' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-privacy-policy-content.php';
- }
-
$privacy_policy_content = WP_Privacy_Policy_Content::get_default_content();
}
diff --git a/src/wp-admin/install.php b/src/wp-admin/install.php
index b655af53f0cb6..847e41f586c51 100644
--- a/src/wp-admin/install.php
+++ b/src/wp-admin/install.php
@@ -40,9 +40,6 @@
/** Load WordPress Translation Install API */
require_once ABSPATH . 'wp-admin/includes/translation-install.php';
-/** Load wpdb */
-require_once ABSPATH . WPINC . '/class-wpdb.php';
-
nocache_headers();
$step = isset( $_GET['step'] ) ? (int) $_GET['step'] : 0;
diff --git a/src/wp-admin/load-scripts.php b/src/wp-admin/load-scripts.php
index e4b6a1ee5b918..9c234a2cf19c3 100644
--- a/src/wp-admin/load-scripts.php
+++ b/src/wp-admin/load-scripts.php
@@ -19,7 +19,12 @@
define( 'ABSPATH', dirname( __DIR__ ) . '/' );
}
-define( 'WPINC', 'wp-includes' );
+if ( ! defined( 'WPINC' ) ) {
+ define( 'WPINC', 'wp-includes' );
+}
+
+require_once ABSPATH . WPINC . '/class-wp-autoload.php';
+WP_Autoload::register();
$protocol = $_SERVER['SERVER_PROTOCOL'];
if ( ! in_array( $protocol, array( 'HTTP/1.1', 'HTTP/2', 'HTTP/2.0', 'HTTP/3' ), true ) ) {
diff --git a/src/wp-admin/load-styles.php b/src/wp-admin/load-styles.php
index 3bdfcc7a22ac5..d726dc09640bf 100644
--- a/src/wp-admin/load-styles.php
+++ b/src/wp-admin/load-styles.php
@@ -19,12 +19,16 @@
define( 'ABSPATH', dirname( __DIR__ ) . '/' );
}
-define( 'WPINC', 'wp-includes' );
+if ( ! defined( 'WPINC' ) ) {
+ define( 'WPINC', 'wp-includes' );
+}
define( 'WP_CONTENT_DIR', ABSPATH . 'wp-content' );
+require_once ABSPATH . WPINC . '/class-wp-autoload.php';
+WP_Autoload::register();
+
require ABSPATH . 'wp-admin/includes/noop.php';
require ABSPATH . WPINC . '/theme.php';
-require ABSPATH . WPINC . '/class-wp-theme-json-resolver.php';
require ABSPATH . WPINC . '/global-styles-and-settings.php';
require ABSPATH . WPINC . '/script-loader.php';
require ABSPATH . WPINC . '/version.php';
diff --git a/src/wp-admin/options-privacy.php b/src/wp-admin/options-privacy.php
index 4205967acb3a8..834795f45aea8 100644
--- a/src/wp-admin/options-privacy.php
+++ b/src/wp-admin/options-privacy.php
@@ -79,11 +79,6 @@ static function ( $body_class ) {
add_settings_error( 'page_for_privacy_policy', 'page_for_privacy_policy', $privacy_page_updated_message, 'success' );
} elseif ( 'create-privacy-page' === $action ) {
-
- if ( ! class_exists( 'WP_Privacy_Policy_Content' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-privacy-policy-content.php';
- }
-
$privacy_policy_page_content = WP_Privacy_Policy_Content::get_default_content();
$privacy_policy_page_id = wp_insert_post(
array(
diff --git a/src/wp-admin/privacy-policy-guide.php b/src/wp-admin/privacy-policy-guide.php
index ffff9e437463b..88adc4f5c3453 100644
--- a/src/wp-admin/privacy-policy-guide.php
+++ b/src/wp-admin/privacy-policy-guide.php
@@ -13,10 +13,6 @@
wp_die( __( 'Sorry, you are not allowed to manage privacy options on this site.' ) );
}
-if ( ! class_exists( 'WP_Privacy_Policy_Content' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-privacy-policy-content.php';
-}
-
// Used in the HTML title tag.
$title = __( 'Privacy Policy Guide' );
diff --git a/src/wp-admin/setup-config.php b/src/wp-admin/setup-config.php
index f9cbc08ced0dc..ef92838eb265d 100644
--- a/src/wp-admin/setup-config.php
+++ b/src/wp-admin/setup-config.php
@@ -30,6 +30,9 @@
define( 'ABSPATH', dirname( __DIR__ ) . '/' );
}
+require_once ABSPATH . 'wp-includes/class-wp-autoload.php';
+WP_Autoload::register();
+
require ABSPATH . 'wp-settings.php';
/** Load WordPress Administration Upgrade API */
diff --git a/src/wp-admin/site-health-info.php b/src/wp-admin/site-health-info.php
index faffb21636827..b53ccfe74b916 100644
--- a/src/wp-admin/site-health-info.php
+++ b/src/wp-admin/site-health-info.php
@@ -10,13 +10,6 @@
die();
}
-if ( ! class_exists( 'WP_Debug_Data' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-debug-data.php';
-}
-if ( ! class_exists( 'WP_Site_Health' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php';
-}
-
$health_check_site_status = WP_Site_Health::get_instance();
wp_admin_notice(
diff --git a/src/wp-admin/site-health.php b/src/wp-admin/site-health.php
index ac6dd1523e7ca..a3462709d4455 100644
--- a/src/wp-admin/site-health.php
+++ b/src/wp-admin/site-health.php
@@ -51,10 +51,6 @@
wp_enqueue_style( 'site-health' );
wp_enqueue_script( 'site-health' );
-if ( ! class_exists( 'WP_Site_Health' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php';
-}
-
if ( 'update_https' === $action ) {
check_admin_referer( 'wp_update_https' );
diff --git a/src/wp-admin/update-core.php b/src/wp-admin/update-core.php
index f1cd0c0a66132..a11c3917643ba 100644
--- a/src/wp-admin/update-core.php
+++ b/src/wp-admin/update-core.php
@@ -326,7 +326,6 @@ function core_auto_updates_settings() {
}
}
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$updater = new WP_Automatic_Updater();
// Defaults:
@@ -845,8 +844,6 @@ function list_translation_updates() {
function do_core_upgrade( $reinstall = false ) {
global $wp_filesystem;
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
-
if ( $reinstall ) {
$url = 'update-core.php?action=do-core-reinstall';
} else {
@@ -1276,7 +1273,6 @@ function do_undismiss_core_update() {
check_admin_referer( 'upgrade-translations' );
require_once ABSPATH . 'wp-admin/admin-header.php';
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$url = 'update-core.php?action=do-translation-upgrade';
$nonce = 'upgrade-translations';
diff --git a/src/wp-admin/update.php b/src/wp-admin/update.php
index a6c59ec06dab2..884e4bf4e60b4 100644
--- a/src/wp-admin/update.php
+++ b/src/wp-admin/update.php
@@ -15,8 +15,6 @@
/** WordPress Administration Bootstrap */
require_once __DIR__ . '/admin.php';
-require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
-
wp_enqueue_script( 'wp-a11y' );
if ( isset( $_GET['action'] ) ) {
@@ -262,8 +260,6 @@
wp_die( __( 'Sorry, you are not allowed to install themes on this site.' ) );
}
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; // For themes_api().
-
check_admin_referer( 'install-theme_' . $theme );
$api = themes_api(
'theme_information',
diff --git a/src/wp-includes/admin-bar.php b/src/wp-includes/admin-bar.php
index 50868b11a2870..03fc0bf33bb0f 100644
--- a/src/wp-includes/admin-bar.php
+++ b/src/wp-includes/admin-bar.php
@@ -27,9 +27,6 @@ function _wp_admin_bar_init() {
return false;
}
- /* Load the admin bar class code ready for instantiation */
- require_once ABSPATH . WPINC . '/class-wp-admin-bar.php';
-
/* Instantiate the admin bar */
/**
diff --git a/src/wp-includes/cache.php b/src/wp-includes/cache.php
index 5b9259481a90b..6ed4b0f235a46 100644
--- a/src/wp-includes/cache.php
+++ b/src/wp-includes/cache.php
@@ -8,9 +8,6 @@
* @subpackage Cache
*/
-/** WP_Object_Cache class */
-require_once ABSPATH . WPINC . '/class-wp-object-cache.php';
-
/**
* Sets up Object Cache Global and assigns it.
*
diff --git a/src/wp-includes/class-IXR.php b/src/wp-includes/class-IXR.php
index 35657c7c7378f..c6f9f8d9fefea 100644
--- a/src/wp-includes/class-IXR.php
+++ b/src/wp-includes/class-IXR.php
@@ -38,28 +38,3 @@
* @link http://scripts.incutio.com/xmlrpc/ Site/manual
* @license http://www.opensource.org/licenses/bsd-license.php BSD
*/
-
-// Don't load directly.
-if ( ! defined( 'ABSPATH' ) ) {
- die( '-1' );
-}
-
-require_once ABSPATH . WPINC . '/IXR/class-IXR-server.php';
-
-require_once ABSPATH . WPINC . '/IXR/class-IXR-base64.php';
-
-require_once ABSPATH . WPINC . '/IXR/class-IXR-client.php';
-
-require_once ABSPATH . WPINC . '/IXR/class-IXR-clientmulticall.php';
-
-require_once ABSPATH . WPINC . '/IXR/class-IXR-date.php';
-
-require_once ABSPATH . WPINC . '/IXR/class-IXR-error.php';
-
-require_once ABSPATH . WPINC . '/IXR/class-IXR-introspectionserver.php';
-
-require_once ABSPATH . WPINC . '/IXR/class-IXR-message.php';
-
-require_once ABSPATH . WPINC . '/IXR/class-IXR-request.php';
-
-require_once ABSPATH . WPINC . '/IXR/class-IXR-value.php';
\ No newline at end of file
diff --git a/src/wp-includes/class-feed.php b/src/wp-includes/class-feed.php
index 8dc5561404d12..c6a320640ed3d 100644
--- a/src/wp-includes/class-feed.php
+++ b/src/wp-includes/class-feed.php
@@ -8,12 +8,3 @@
*/
_deprecated_file( basename( __FILE__ ), '4.7.0', 'fetch_feed()' );
-
-if ( ! class_exists( 'SimplePie\SimplePie', false ) ) {
- require_once ABSPATH . WPINC . '/class-simplepie.php';
-}
-
-require_once ABSPATH . WPINC . '/class-wp-feed-cache.php';
-require_once ABSPATH . WPINC . '/class-wp-feed-cache-transient.php';
-require_once ABSPATH . WPINC . '/class-wp-simplepie-file.php';
-require_once ABSPATH . WPINC . '/class-wp-simplepie-sanitize-kses.php';
diff --git a/src/wp-includes/class-http.php b/src/wp-includes/class-http.php
index df43f11717840..91c387d6b1389 100644
--- a/src/wp-includes/class-http.php
+++ b/src/wp-includes/class-http.php
@@ -9,6 +9,3 @@
*/
_deprecated_file( basename( __FILE__ ), '5.9.0', WPINC . '/class-wp-http.php' );
-
-/** WP_Http class */
-require_once ABSPATH . WPINC . '/class-wp-http.php';
diff --git a/src/wp-includes/class-oembed.php b/src/wp-includes/class-oembed.php
index c7ff40d1cc743..229ac76840369 100644
--- a/src/wp-includes/class-oembed.php
+++ b/src/wp-includes/class-oembed.php
@@ -10,6 +10,3 @@
*/
_deprecated_file( basename( __FILE__ ), '5.3.0', WPINC . '/class-wp-oembed.php' );
-
-/** WP_oEmbed class */
-require_once ABSPATH . WPINC . '/class-wp-oembed.php';
diff --git a/src/wp-includes/class-wp-autoload.php b/src/wp-includes/class-wp-autoload.php
new file mode 100644
index 0000000000000..837dca9ddc092
--- /dev/null
+++ b/src/wp-includes/class-wp-autoload.php
@@ -0,0 +1,555 @@
+ 'wp-includes/class-phpass.php',
+ 'pop3' => 'wp-includes/class-pop3.php',
+ 'services_json' => 'wp-includes/class-json.php',
+ 'services_json_error' => 'wp-includes/class-json.php',
+ 'walker_categorydropdown' => 'wp-includes/class-walker-category-dropdown.php',
+ 'walker_category' => 'wp-includes/class-walker-category.php',
+ 'walker_comment' => 'wp-includes/class-walker-comment.php',
+ 'walker_nav_menu' => 'wp-includes/class-walker-nav-menu.php',
+ 'walker_pagedropdown' => 'wp-includes/class-walker-page-dropdown.php',
+ 'walker_page' => 'wp-includes/class-walker-page.php',
+ 'wp_abilities_registry' => 'wp-includes/abilities-api/class-wp-abilities-registry.php',
+ 'wp_ability' => 'wp-includes/abilities-api/class-wp-ability.php',
+ 'wp_ability_categories_registry' => 'wp-includes/abilities-api/class-wp-ability-categories-registry.php',
+ 'wp_ability_category' => 'wp-includes/abilities-api/class-wp-ability-category.php',
+ 'wp_admin_bar' => 'wp-includes/class-wp-admin-bar.php',
+ 'wp_ai_client_ability_function_resolver' => 'wp-includes/ai-client/class-wp-ai-client-ability-function-resolver.php',
+ 'wp_ai_client_cache' => 'wp-includes/ai-client/adapters/class-wp-ai-client-cache.php',
+ 'wp_ai_client_discovery_strategy' => 'wp-includes/ai-client/adapters/class-wp-ai-client-discovery-strategy.php',
+ 'wp_ai_client_event_dispatcher' => 'wp-includes/ai-client/adapters/class-wp-ai-client-event-dispatcher.php',
+ 'wp_ai_client_http_client' => 'wp-includes/ai-client/adapters/class-wp-ai-client-http-client.php',
+ 'wp_ai_client_prompt_builder' => 'wp-includes/ai-client/class-wp-ai-client-prompt-builder.php',
+ 'wp_ajax_response' => 'wp-includes/class-wp-ajax-response.php',
+ 'wp_application_passwords' => 'wp-includes/class-wp-application-passwords.php',
+ 'wp_block_bindings_registry' => 'wp-includes/class-wp-block-bindings-registry.php',
+ 'wp_block_bindings_source' => 'wp-includes/class-wp-block-bindings-source.php',
+ 'wp_block_editor_context' => 'wp-includes/class-wp-block-editor-context.php',
+ 'wp_block_list' => 'wp-includes/class-wp-block-list.php',
+ 'wp_block_metadata_registry' => 'wp-includes/class-wp-block-metadata-registry.php',
+ 'wp_block_parser_block' => 'wp-includes/class-wp-block-parser-block.php',
+ 'wp_block_parser_frame' => 'wp-includes/class-wp-block-parser-frame.php',
+ 'wp_block_parser' => 'wp-includes/class-wp-block-parser.php',
+ 'wp_block_pattern_categories_registry' => 'wp-includes/class-wp-block-pattern-categories-registry.php',
+ 'wp_block_patterns_registry' => 'wp-includes/class-wp-block-patterns-registry.php',
+ 'wp_block_processor' => 'wp-includes/class-wp-block-processor.php',
+ 'wp_block_styles_registry' => 'wp-includes/class-wp-block-styles-registry.php',
+ 'wp_block_supports' => 'wp-includes/class-wp-block-supports.php',
+ 'wp_block_template' => 'wp-includes/class-wp-block-template.php',
+ 'wp_block_templates_registry' => 'wp-includes/class-wp-block-templates-registry.php',
+ 'wp_block_type_registry' => 'wp-includes/class-wp-block-type-registry.php',
+ 'wp_block_type' => 'wp-includes/class-wp-block-type.php',
+ 'wp_block' => 'wp-includes/class-wp-block.php',
+ 'wp_classic_to_block_menu_converter' => 'wp-includes/class-wp-classic-to-block-menu-converter.php',
+ 'wp_comment_query' => 'wp-includes/class-wp-comment-query.php',
+ 'wp_comment' => 'wp-includes/class-wp-comment.php',
+ 'wp_connector_registry' => 'wp-includes/class-wp-connector-registry.php',
+ 'wp_customize_control' => 'wp-includes/class-wp-customize-control.php',
+ 'wp_customize_manager' => 'wp-includes/class-wp-customize-manager.php',
+ 'wp_customize_nav_menus' => 'wp-includes/class-wp-customize-nav-menus.php',
+ 'wp_customize_panel' => 'wp-includes/class-wp-customize-panel.php',
+ 'wp_customize_section' => 'wp-includes/class-wp-customize-section.php',
+ 'wp_customize_setting' => 'wp-includes/class-wp-customize-setting.php',
+ 'wp_customize_widgets' => 'wp-includes/class-wp-customize-widgets.php',
+ 'wp_date_query' => 'wp-includes/class-wp-date-query.php',
+ 'wp_dependencies' => 'wp-includes/class-wp-dependencies.php',
+ '_wp_dependency' => 'wp-includes/class-wp-dependency.php',
+ 'wp_duotone' => 'wp-includes/class-wp-duotone.php',
+ '_wp_editors' => 'wp-includes/class-wp-editor.php',
+ 'wp_embed' => 'wp-includes/class-wp-embed.php',
+ 'wp_error' => 'wp-includes/class-wp-error.php',
+ 'wp_exception' => 'wp-includes/class-wp-exception.php',
+ 'wp_fatal_error_handler' => 'wp-includes/class-wp-fatal-error-handler.php',
+ 'wp_feed_cache_transient' => 'wp-includes/class-wp-feed-cache-transient.php',
+ 'wp_feed_cache' => 'wp-includes/class-wp-feed-cache.php',
+ 'wp_filter_sentinel' => 'wp-includes/class-wp-filter-sentinel.php',
+ 'wp_hook' => 'wp-includes/class-wp-hook.php',
+ 'wp_http_cookie' => 'wp-includes/class-wp-http-cookie.php',
+ 'wp_http_curl' => 'wp-includes/class-wp-http-curl.php',
+ 'wp_http_encoding' => 'wp-includes/class-wp-http-encoding.php',
+ 'wp_http_ixr_client' => 'wp-includes/class-wp-http-ixr-client.php',
+ 'wp_http_proxy' => 'wp-includes/class-wp-http-proxy.php',
+ 'wp_http_requests_hooks' => 'wp-includes/class-wp-http-requests-hooks.php',
+ 'wp_http_requests_response' => 'wp-includes/class-wp-http-requests-response.php',
+ 'wp_http_response' => 'wp-includes/class-wp-http-response.php',
+ 'wp_http_streams' => 'wp-includes/class-wp-http-streams.php',
+ 'wp_http_fsockopen' => 'wp-includes/class-wp-http-streams.php',
+ 'wp_http' => 'wp-includes/class-wp-http.php',
+ 'wp_icons_registry' => 'wp-includes/class-wp-icons-registry.php',
+ 'wp_image_editor_gd' => 'wp-includes/class-wp-image-editor-gd.php',
+ 'wp_image_editor_imagick' => 'wp-includes/class-wp-image-editor-imagick.php',
+ 'wp_image_editor' => 'wp-includes/class-wp-image-editor.php',
+ 'wp_list_util' => 'wp-includes/class-wp-list-util.php',
+ 'wp_locale_switcher' => 'wp-includes/class-wp-locale-switcher.php',
+ 'wp_locale' => 'wp-includes/class-wp-locale.php',
+ 'wp_matchesmapregex' => 'wp-includes/class-wp-matchesmapregex.php',
+ 'wp_meta_query' => 'wp-includes/class-wp-meta-query.php',
+ 'wp_metadata_lazyloader' => 'wp-includes/class-wp-metadata-lazyloader.php',
+ 'wp_navigation_fallback' => 'wp-includes/class-wp-navigation-fallback.php',
+ 'wp_network_query' => 'wp-includes/class-wp-network-query.php',
+ 'wp_network' => 'wp-includes/class-wp-network.php',
+ 'wp_object_cache' => 'wp-includes/class-wp-object-cache.php',
+ 'wp_oembed_controller' => 'wp-includes/class-wp-oembed-controller.php',
+ 'wp_oembed' => 'wp-includes/class-wp-oembed.php',
+ 'wp_paused_extensions_storage' => 'wp-includes/class-wp-paused-extensions-storage.php',
+ 'wp_phpmailer' => 'wp-includes/class-wp-phpmailer.php',
+ 'wp_plugin_dependencies' => 'wp-includes/class-wp-plugin-dependencies.php',
+ 'wp_post_type' => 'wp-includes/class-wp-post-type.php',
+ 'wp_post' => 'wp-includes/class-wp-post.php',
+ 'wp_query' => 'wp-includes/class-wp-query.php',
+ 'wp_recovery_mode_cookie_service' => 'wp-includes/class-wp-recovery-mode-cookie-service.php',
+ 'wp_recovery_mode_email_service' => 'wp-includes/class-wp-recovery-mode-email-service.php',
+ 'wp_recovery_mode_key_service' => 'wp-includes/class-wp-recovery-mode-key-service.php',
+ 'wp_recovery_mode_link_service' => 'wp-includes/class-wp-recovery-mode-link-service.php',
+ 'wp_recovery_mode' => 'wp-includes/class-wp-recovery-mode.php',
+ 'wp_rewrite' => 'wp-includes/class-wp-rewrite.php',
+ 'wp_role' => 'wp-includes/class-wp-role.php',
+ 'wp_roles' => 'wp-includes/class-wp-roles.php',
+ 'wp_script_modules' => 'wp-includes/class-wp-script-modules.php',
+ 'wp_scripts' => 'wp-includes/class-wp-scripts.php',
+ 'wp_session_tokens' => 'wp-includes/class-wp-session-tokens.php',
+ 'wp_simplepie_file' => 'wp-includes/class-wp-simplepie-file.php',
+ 'wp_simplepie_sanitize_kses' => 'wp-includes/class-wp-simplepie-sanitize-kses.php',
+ 'wp_site_query' => 'wp-includes/class-wp-site-query.php',
+ 'wp_site' => 'wp-includes/class-wp-site.php',
+ 'wp_speculation_rules' => 'wp-includes/class-wp-speculation-rules.php',
+ 'wp_styles' => 'wp-includes/class-wp-styles.php',
+ 'wp_tax_query' => 'wp-includes/class-wp-tax-query.php',
+ 'wp_taxonomy' => 'wp-includes/class-wp-taxonomy.php',
+ 'wp_term_query' => 'wp-includes/class-wp-term-query.php',
+ 'wp_term' => 'wp-includes/class-wp-term.php',
+ 'wp_text_diff_renderer_inline' => 'wp-includes/class-wp-text-diff-renderer-inline.php',
+ 'wp_text_diff_renderer_table' => 'wp-includes/class-wp-text-diff-renderer-table.php',
+ 'wp_textdomain_registry' => 'wp-includes/class-wp-textdomain-registry.php',
+ 'wp_theme_json_data' => 'wp-includes/class-wp-theme-json-data.php',
+ 'wp_theme_json_resolver' => 'wp-includes/class-wp-theme-json-resolver.php',
+ 'wp_theme_json_schema' => 'wp-includes/class-wp-theme-json-schema.php',
+ 'wp_theme_json' => 'wp-includes/class-wp-theme-json.php',
+ 'wp_theme' => 'wp-includes/class-wp-theme.php',
+ 'wp_token_map' => 'wp-includes/class-wp-token-map.php',
+ 'wp_url_pattern_prefixer' => 'wp-includes/class-wp-url-pattern-prefixer.php',
+ 'wp_user_meta_session_tokens' => 'wp-includes/class-wp-user-meta-session-tokens.php',
+ 'wp_user_query' => 'wp-includes/class-wp-user-query.php',
+ 'wp_user_request' => 'wp-includes/class-wp-user-request.php',
+ 'wp_user' => 'wp-includes/class-wp-user.php',
+ 'walker' => 'wp-includes/class-wp-walker.php',
+ 'wp_widget_factory' => 'wp-includes/class-wp-widget-factory.php',
+ 'wp_widget' => 'wp-includes/class-wp-widget.php',
+ 'wp_xmlrpc_server' => 'wp-includes/class-wp-xmlrpc-server.php',
+ 'wp' => 'wp-includes/class-wp.php',
+
+ // Classes in the wp-includes/fonts folder.
+ 'wp_font_collection' => 'wp-includes/fonts/class-wp-font-collection.php',
+ 'wp_font_face_resolver' => 'wp-includes/fonts/class-wp-font-face-resolver.php',
+ 'wp_font_face' => 'wp-includes/fonts/class-wp-font-face.php',
+ 'wp_font_library' => 'wp-includes/fonts/class-wp-font-library.php',
+ 'wp_font_utils' => 'wp-includes/fonts/class-wp-font-utils.php',
+
+ // Classes in the wp-includes/html-api/ folder.
+ 'wp_html_active_formatting_elements' => 'wp-includes/html-api/class-wp-html-active-formatting-elements.php',
+ 'wp_html_attribute_token' => 'wp-includes/html-api/class-wp-html-attribute-token.php',
+ 'wp_html_decoder' => 'wp-includes/html-api/class-wp-html-decoder.php',
+ 'wp_html_doctype_info' => 'wp-includes/html-api/class-wp-html-doctype-info.php',
+ 'wp_html_open_elements' => 'wp-includes/html-api/class-wp-html-open-elements.php',
+ 'wp_html_processor_state' => 'wp-includes/html-api/class-wp-html-processor-state.php',
+ 'wp_html_processor' => 'wp-includes/html-api/class-wp-html-processor.php',
+ 'wp_html_span' => 'wp-includes/html-api/class-wp-html-span.php',
+ 'wp_html_stack_event' => 'wp-includes/html-api/class-wp-html-stack-event.php',
+ 'wp_html_tag_processor' => 'wp-includes/html-api/class-wp-html-tag-processor.php',
+ 'wp_html_text_replacement' => 'wp-includes/html-api/class-wp-html-text-replacement.php',
+ 'wp_html_token' => 'wp-includes/html-api/class-wp-html-token.php',
+ 'wp_html_unsupported_exception' => 'wp-includes/html-api/class-wp-html-unsupported-exception.php',
+
+ // Classes in the wp-includes/interactivity-api folder.
+ 'wp_interactivity_api_directives_processor' => 'wp-includes/interactivity-api/class-wp-interactivity-api-directives-processor.php',
+ 'wp_interactivity_api' => 'wp-includes/interactivity-api/class-wp-interactivity-api.php',
+
+ // Classes in the wp-includes/customize/ folder.
+ 'wp_customize_background_image_control' => 'wp-includes/customize/class-wp-customize-background-image-control.php',
+ 'wp_customize_background_image_setting' => 'wp-includes/customize/class-wp-customize-background-image-setting.php',
+ 'wp_customize_background_position_control' => 'wp-includes/customize/class-wp-customize-background-position-control.php',
+ 'wp_customize_code_editor_control' => 'wp-includes/customize/class-wp-customize-code-editor-control.php',
+ 'wp_customize_color_control' => 'wp-includes/customize/class-wp-customize-color-control.php',
+ 'wp_customize_cropped_image_control' => 'wp-includes/customize/class-wp-customize-cropped-image-control.php',
+ 'wp_customize_custom_css_setting' => 'wp-includes/customize/class-wp-customize-custom-css-setting.php',
+ 'wp_customize_date_time_control' => 'wp-includes/customize/class-wp-customize-date-time-control.php',
+ 'wp_customize_filter_setting' => 'wp-includes/customize/class-wp-customize-filter-setting.php',
+ 'wp_customize_header_image_control' => 'wp-includes/customize/class-wp-customize-header-image-control.php',
+ 'wp_customize_header_image_setting' => 'wp-includes/customize/class-wp-customize-header-image-setting.php',
+ 'wp_customize_image_control' => 'wp-includes/customize/class-wp-customize-image-control.php',
+ 'wp_customize_media_control' => 'wp-includes/customize/class-wp-customize-media-control.php',
+ 'wp_customize_nav_menu_auto_add_control' => 'wp-includes/customize/class-wp-customize-nav-menu-auto-add-control.php',
+ 'wp_customize_nav_menu_control' => 'wp-includes/customize/class-wp-customize-nav-menu-control.php',
+ 'wp_customize_nav_menu_item_control' => 'wp-includes/customize/class-wp-customize-nav-menu-item-control.php',
+ 'wp_customize_nav_menu_item_setting' => 'wp-includes/customize/class-wp-customize-nav-menu-item-setting.php',
+ 'wp_customize_nav_menu_location_control' => 'wp-includes/customize/class-wp-customize-nav-menu-location-control.php',
+ 'wp_customize_nav_menu_locations_control' => 'wp-includes/customize/class-wp-customize-nav-menu-locations-control.php',
+ 'wp_customize_nav_menu_name_control' => 'wp-includes/customize/class-wp-customize-nav-menu-name-control.php',
+ 'wp_customize_nav_menu_section' => 'wp-includes/customize/class-wp-customize-nav-menu-section.php',
+ 'wp_customize_nav_menu_setting' => 'wp-includes/customize/class-wp-customize-nav-menu-setting.php',
+ 'wp_customize_nav_menus_panel' => 'wp-includes/customize/class-wp-customize-nav-menus-panel.php',
+ 'wp_customize_new_menu_control' => 'wp-includes/customize/class-wp-customize-new-menu-control.php',
+ 'wp_customize_new_menu_section' => 'wp-includes/customize/class-wp-customize-new-menu-section.php',
+ 'wp_customize_partial' => 'wp-includes/customize/class-wp-customize-partial.php',
+ 'wp_customize_selective_refresh' => 'wp-includes/customize/class-wp-customize-selective-refresh.php',
+ 'wp_customize_sidebar_section' => 'wp-includes/customize/class-wp-customize-sidebar-section.php',
+ 'wp_customize_site_icon_control' => 'wp-includes/customize/class-wp-customize-site-icon-control.php',
+ 'wp_customize_theme_control' => 'wp-includes/customize/class-wp-customize-theme-control.php',
+ 'wp_customize_themes_panel' => 'wp-includes/customize/class-wp-customize-themes-panel.php',
+ 'wp_customize_themes_section' => 'wp-includes/customize/class-wp-customize-themes-section.php',
+ 'wp_customize_upload_control' => 'wp-includes/customize/class-wp-customize-upload-control.php',
+ 'wp_sidebar_block_editor_control' => 'wp-includes/customize/class-wp-sidebar-block-editor-control.php',
+ 'wp_widget_area_customize_control' => 'wp-includes/customize/class-wp-widget-area-customize-control.php',
+ 'wp_widget_form_customize_control' => 'wp-includes/customize/class-wp-widget-form-customize-control.php',
+
+ // Classes in the wp-includes/IXR folder.
+ 'ixr_base64' => 'wp-includes/IXR/class-IXR-base64.php',
+ 'ixr_client' => 'wp-includes/IXR/class-IXR-client.php',
+ 'ixr_clientmulticall' => 'wp-includes/IXR/class-IXR-clientmulticall.php',
+ 'ixr_date' => 'wp-includes/IXR/class-IXR-date.php',
+ 'ixr_error' => 'wp-includes/IXR/class-IXR-error.php',
+ 'ixr_introspectionserver' => 'wp-includes/IXR/class-IXR-introspectionserver.php',
+ 'ixr_message' => 'wp-includes/IXR/class-IXR-message.php',
+ 'ixr_request' => 'wp-includes/IXR/class-IXR-request.php',
+ 'ixr_server' => 'wp-includes/IXR/class-IXR-server.php',
+ 'ixr_value' => 'wp-includes/IXR/class-IXR-value.php',
+
+ // Classes in the wp-includes/l10n folder.
+ 'wp_translation_controller' => 'wp-includes/l10n/class-wp-translation-controller.php',
+ 'wp_translation_file_mo' => 'wp-includes/l10n/class-wp-translation-file-mo.php',
+ 'wp_translation_file_php' => 'wp-includes/l10n/class-wp-translation-file-php.php',
+ 'wp_translation_file' => 'wp-includes/l10n/class-wp-translation-file.php',
+ 'wp_translations' => 'wp-includes/l10n/class-wp-translations.php',
+
+ // Classes in the wp-includes/pomo folder.
+ 'translation_entry' => 'wp-includes/pomo/entry.php',
+ 'mo' => 'wp-includes/pomo/mo.php',
+ 'plural_forms' => 'wp-includes/pomo/plural-forms.php',
+ 'po' => 'wp-includes/pomo/po.php',
+ 'pomo_reader' => 'wp-includes/pomo/streams.php',
+ 'pomo_filereader' => 'wp-includes/pomo/streams.php',
+ 'pomo_stringreader' => 'wp-includes/pomo/streams.php',
+ 'pomo_cachedfilereader' => 'wp-includes/pomo/streams.php',
+ 'pomo_cachedintfilereader' => 'wp-includes/pomo/streams.php',
+ 'translations' => 'wp-includes/pomo/translations.php',
+ 'gettext_translations' => 'wp-includes/pomo/translations.php',
+ 'noop_translations' => 'wp-includes/pomo/translations.php',
+
+ // Classes in the wp-includes/Text folder.
+ 'text_diff' => 'wp-includes/Text/Diff.php',
+ 'text_diff_engine_native' => 'wp-includes/Text/Diff/Engine/native.php',
+ 'text_diff_engine_shell' => 'wp-includes/Text/Diff/Engine/shell.php',
+ 'text_diff_engine_string' => 'wp-includes/Text/Diff/Engine/string.php',
+ 'text_diff_engine_xdiff' => 'wp-includes/Text/Diff/Engine/xdiff.php',
+ 'text_diff_renderer_inline' => 'wp-includes/Text/Diff/Renderer/inline.php',
+ 'text_diff_renderer' => 'wp-includes/Text/Diff/Renderer.php',
+
+ // Classes in the wp-includes/rest-api folder.
+ 'wp_rest_abilities_v1_categories_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-categories-controller.php',
+ 'wp_rest_abilities_v1_list_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php',
+ 'wp_rest_abilities_v1_run_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-abilities-v1-run-controller.php',
+ 'wp_rest_application_passwords_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-application-passwords-controller.php',
+ 'wp_rest_attachments_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-attachments-controller.php',
+ 'wp_rest_autosaves_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-autosaves-controller.php',
+ 'wp_rest_block_directory_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-block-directory-controller.php',
+ 'wp_rest_block_pattern_categories_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-block-pattern-categories-controller.php',
+ 'wp_rest_block_patterns_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-block-patterns-controller.php',
+ 'wp_rest_block_renderer_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-block-renderer-controller.php',
+ 'wp_rest_block_types_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-block-types-controller.php',
+ 'wp_rest_blocks_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-blocks-controller.php',
+ 'wp_rest_comments_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-comments-controller.php',
+ 'wp_rest_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-controller.php',
+ 'wp_rest_edit_site_export_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-edit-site-export-controller.php',
+ 'wp_rest_font_collections_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-font-collections-controller.php',
+ 'wp_rest_font_faces_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-font-faces-controller.php',
+ 'wp_rest_font_families_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-font-families-controller.php',
+ 'wp_rest_global_styles_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-global-styles-controller.php',
+ 'wp_rest_global_styles_revisions_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-global-styles-revisions-controller.php',
+ 'wp_rest_icons_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-icons-controller.php',
+ 'wp_rest_menu_items_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-menu-items-controller.php',
+ 'wp_rest_menu_locations_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-menu-locations-controller.php',
+ 'wp_rest_menus_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-menus-controller.php',
+ 'wp_rest_navigation_fallback_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-navigation-fallback-controller.php',
+ 'wp_rest_pattern_directory_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-pattern-directory-controller.php',
+ 'wp_rest_plugins_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-plugins-controller.php',
+ 'wp_rest_post_statuses_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-post-statuses-controller.php',
+ 'wp_rest_post_types_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-post-types-controller.php',
+ 'wp_rest_posts_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php',
+ 'wp_rest_revisions_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php',
+ 'wp_rest_search_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-search-controller.php',
+ 'wp_rest_settings_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-settings-controller.php',
+ 'wp_rest_sidebars_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-sidebars-controller.php',
+ 'wp_rest_site_health_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-site-health-controller.php',
+ 'wp_rest_taxonomies_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-taxonomies-controller.php',
+ 'wp_rest_template_autosaves_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-template-autosaves-controller.php',
+ 'wp_rest_template_revisions_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-template-revisions-controller.php',
+ 'wp_rest_templates_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-templates-controller.php',
+ 'wp_rest_terms_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php',
+ 'wp_rest_themes_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-themes-controller.php',
+ 'wp_rest_url_details_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-url-details-controller.php',
+ 'wp_rest_users_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-users-controller.php',
+ 'wp_rest_widget_types_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-widget-types-controller.php',
+ 'wp_rest_widgets_controller' => 'wp-includes/rest-api/endpoints/class-wp-rest-widgets-controller.php',
+ 'wp_rest_comment_meta_fields' => 'wp-includes/rest-api/fields/class-wp-rest-comment-meta-fields.php',
+ 'wp_rest_meta_fields' => 'wp-includes/rest-api/fields/class-wp-rest-meta-fields.php',
+ 'wp_rest_post_meta_fields' => 'wp-includes/rest-api/fields/class-wp-rest-post-meta-fields.php',
+ 'wp_rest_term_meta_fields' => 'wp-includes/rest-api/fields/class-wp-rest-term-meta-fields.php',
+ 'wp_rest_user_meta_fields' => 'wp-includes/rest-api/fields/class-wp-rest-user-meta-fields.php',
+ 'wp_rest_post_format_search_handler' => 'wp-includes/rest-api/search/class-wp-rest-post-format-search-handler.php',
+ 'wp_rest_post_search_handler' => 'wp-includes/rest-api/search/class-wp-rest-post-search-handler.php',
+ 'wp_rest_search_handler' => 'wp-includes/rest-api/search/class-wp-rest-search-handler.php',
+ 'wp_rest_term_search_handler' => 'wp-includes/rest-api/search/class-wp-rest-term-search-handler.php',
+ 'wp_rest_request' => 'wp-includes/rest-api/class-wp-rest-request.php',
+ 'wp_rest_response' => 'wp-includes/rest-api/class-wp-rest-response.php',
+ 'wp_rest_server' => 'wp-includes/rest-api/class-wp-rest-server.php',
+
+ // Classes in wp-includes/sitemaps.
+ 'wp_sitemaps_posts' => 'wp-includes/sitemaps/providers/class-wp-sitemaps-posts.php',
+ 'wp_sitemaps_taxonomies' => 'wp-includes/sitemaps/providers/class-wp-sitemaps-taxonomies.php',
+ 'wp_sitemaps_users' => 'wp-includes/sitemaps/providers/class-wp-sitemaps-users.php',
+ 'wp_sitemaps_index' => 'wp-includes/sitemaps/class-wp-sitemaps-index.php',
+ 'wp_sitemaps_provider' => 'wp-includes/sitemaps/class-wp-sitemaps-provider.php',
+ 'wp_sitemaps_registry' => 'wp-includes/sitemaps/class-wp-sitemaps-registry.php',
+ 'wp_sitemaps_renderer' => 'wp-includes/sitemaps/class-wp-sitemaps-renderer.php',
+ 'wp_sitemaps_stylesheet' => 'wp-includes/sitemaps/class-wp-sitemaps-stylesheet.php',
+ 'wp_sitemaps' => 'wp-includes/sitemaps/class-wp-sitemaps.php',
+
+ // Classes in wp-includes/style-engine.
+ 'wp_style_engine_css_declarations' => 'wp-includes/style-engine/class-wp-style-engine-css-declarations.php',
+ 'wp_style_engine_css_rule' => 'wp-includes/style-engine/class-wp-style-engine-css-rule.php',
+ 'wp_style_engine_css_rules_store' => 'wp-includes/style-engine/class-wp-style-engine-css-rules-store.php',
+ 'wp_style_engine_processor' => 'wp-includes/style-engine/class-wp-style-engine-processor.php',
+ 'wp_style_engine' => 'wp-includes/style-engine/class-wp-style-engine.php',
+
+ // Classes in wp-includes/widgets.
+ 'wp_nav_menu_widget' => 'wp-includes/widgets/class-wp-nav-menu-widget.php',
+ 'wp_widget_archives' => 'wp-includes/widgets/class-wp-widget-archives.php',
+ 'wp_widget_block' => 'wp-includes/widgets/class-wp-widget-block.php',
+ 'wp_widget_calendar' => 'wp-includes/widgets/class-wp-widget-calendar.php',
+ 'wp_widget_categories' => 'wp-includes/widgets/class-wp-widget-categories.php',
+ 'wp_widget_custom_html' => 'wp-includes/widgets/class-wp-widget-custom-html.php',
+ 'wp_widget_links' => 'wp-includes/widgets/class-wp-widget-links.php',
+ 'wp_widget_media_audio' => 'wp-includes/widgets/class-wp-widget-media-audio.php',
+ 'wp_widget_media_gallery' => 'wp-includes/widgets/class-wp-widget-media-gallery.php',
+ 'wp_widget_media_image' => 'wp-includes/widgets/class-wp-widget-media-image.php',
+ 'wp_widget_media_video' => 'wp-includes/widgets/class-wp-widget-media-video.php',
+ 'wp_widget_media' => 'wp-includes/widgets/class-wp-widget-media.php',
+ 'wp_widget_meta' => 'wp-includes/widgets/class-wp-widget-meta.php',
+ 'wp_widget_pages' => 'wp-includes/widgets/class-wp-widget-pages.php',
+ 'wp_widget_recent_comments' => 'wp-includes/widgets/class-wp-widget-recent-comments.php',
+ 'wp_widget_recent_posts' => 'wp-includes/widgets/class-wp-widget-recent-posts.php',
+ 'wp_widget_rss' => 'wp-includes/widgets/class-wp-widget-rss.php',
+ 'wp_widget_search' => 'wp-includes/widgets/class-wp-widget-search.php',
+ 'wp_widget_tag_cloud' => 'wp-includes/widgets/class-wp-widget-tag-cloud.php',
+ 'wp_widget_text' => 'wp-includes/widgets/class-wp-widget-text.php',
+
+ // Classes in wp-admin/includes.
+ 'automatic_upgrader_skin' => 'wp-admin/includes/class-automatic-upgrader-skin.php',
+ 'bulk_plugin_upgrader_skin' => 'wp-admin/includes/class-bulk-plugin-upgrader-skin.php',
+ 'bulk_theme_upgrader_skin' => 'wp-admin/includes/class-bulk-theme-upgrader-skin.php',
+ 'bulk_upgrader_skin' => 'wp-admin/includes/class-bulk-upgrader-skin.php',
+ 'core_upgrader' => 'wp-admin/includes/class-core-upgrader.php',
+ 'custom_background' => 'wp-admin/includes/class-custom-background.php',
+ 'custom_image_header' => 'wp-admin/includes/class-custom-image-header.php',
+ 'file_upload_upgrader' => 'wp-admin/includes/class-file-upload-upgrader.php',
+ 'ftp' => 'wp-admin/includes/class-ftp.php',
+ 'ftp_base' => 'wp-admin/includes/class-ftp.php',
+ 'ftp_pure' => 'wp-admin/includes/class-ftp-pure.php',
+ 'ftp_sockets' => 'wp-admin/includes/class-ftp-sockets.php',
+ 'language_pack_upgrader_skin' => 'wp-admin/includes/class-language-pack-upgrader-skin.php',
+ 'language_pack_upgrader' => 'wp-admin/includes/class-language-pack-upgrader.php',
+ 'pclzip' => 'wp-admin/includes/class-pclzip.php',
+ 'plugin_installer_skin' => 'wp-admin/includes/class-plugin-installer-skin.php',
+ 'plugin_upgrader_skin' => 'wp-admin/includes/class-plugin-upgrader-skin.php',
+ 'plugin_upgrader' => 'wp-admin/includes/class-plugin-upgrader.php',
+ 'theme_installer_skin' => 'wp-admin/includes/class-theme-installer-skin.php',
+ 'theme_upgrader_skin' => 'wp-admin/includes/class-theme-upgrader-skin.php',
+ 'theme_upgrader' => 'wp-admin/includes/class-theme-upgrader.php',
+ 'walker_category_checklist' => 'wp-admin/includes/class-walker-category-checklist.php',
+ 'walker_nav_menu_checklist' => 'wp-admin/includes/class-walker-nav-menu-checklist.php',
+ 'walker_nav_menu_edit' => 'wp-admin/includes/class-walker-nav-menu-edit.php',
+ 'wp_ajax_upgrader_skin' => 'wp-admin/includes/class-wp-ajax-upgrader-skin.php',
+ 'wp_application_passwords_list_table' => 'wp-admin/includes/class-wp-application-passwords-list-table.php',
+ 'wp_automatic_updater' => 'wp-admin/includes/class-wp-automatic-updater.php',
+ 'wp_comments_list_table' => 'wp-admin/includes/class-wp-comments-list-table.php',
+ 'wp_community_events' => 'wp-admin/includes/class-wp-community-events.php',
+ 'wp_debug_data' => 'wp-admin/includes/class-wp-debug-data.php',
+ 'wp_filesystem_base' => 'wp-admin/includes/class-wp-filesystem-base.php',
+ 'wp_filesystem_direct' => 'wp-admin/includes/class-wp-filesystem-direct.php',
+ 'wp_filesystem_ftpext' => 'wp-admin/includes/class-wp-filesystem-ftpext.php',
+ 'wp_filesystem_ftpsockets' => 'wp-admin/includes/class-wp-filesystem-ftpsockets.php',
+ 'wp_filesystem_ssh2' => 'wp-admin/includes/class-wp-filesystem-ssh2.php',
+ 'wp_internal_pointers' => 'wp-admin/includes/class-wp-internal-pointers.php',
+ 'wp_links_list_table' => 'wp-admin/includes/class-wp-links-list-table.php',
+ '_wp_list_table_compat' => 'wp-admin/includes/class-wp-list-table-compat.php',
+ 'wp_list_table' => 'wp-admin/includes/class-wp-list-table.php',
+ 'wp_media_list_table' => 'wp-admin/includes/class-wp-media-list-table.php',
+ 'wp_ms_sites_list_table' => 'wp-admin/includes/class-wp-ms-sites-list-table.php',
+ 'wp_ms_themes_list_table' => 'wp-admin/includes/class-wp-ms-themes-list-table.php',
+ 'wp_ms_users_list_table' => 'wp-admin/includes/class-wp-ms-users-list-table.php',
+ 'wp_plugin_install_list_table' => 'wp-admin/includes/class-wp-plugin-install-list-table.php',
+ 'wp_plugins_list_table' => 'wp-admin/includes/class-wp-plugins-list-table.php',
+ 'wp_post_comments_list_table' => 'wp-admin/includes/class-wp-post-comments-list-table.php',
+ 'wp_posts_list_table' => 'wp-admin/includes/class-wp-posts-list-table.php',
+ 'wp_privacy_data_export_requests_list_table' => 'wp-admin/includes/class-wp-privacy-data-export-requests-list-table.php',
+ 'wp_privacy_data_removal_requests_list_table' => 'wp-admin/includes/class-wp-privacy-data-removal-requests-list-table.php',
+ 'wp_privacy_policy_content' => 'wp-admin/includes/class-wp-privacy-policy-content.php',
+ 'wp_privacy_requests_table' => 'wp-admin/includes/class-wp-privacy-requests-table.php',
+ 'wp_screen' => 'wp-admin/includes/class-wp-screen.php',
+ 'wp_site_health_auto_updates' => 'wp-admin/includes/class-wp-site-health-auto-updates.php',
+ 'wp_site_health' => 'wp-admin/includes/class-wp-site-health.php',
+ 'wp_site_icon' => 'wp-admin/includes/class-wp-site-icon.php',
+ 'wp_terms_list_table' => 'wp-admin/includes/class-wp-terms-list-table.php',
+ 'wp_theme_install_list_table' => 'wp-admin/includes/class-wp-theme-install-list-table.php',
+ 'wp_themes_list_table' => 'wp-admin/includes/class-wp-themes-list-table.php',
+ 'wp_upgrader_skin' => 'wp-admin/includes/class-wp-upgrader-skin.php',
+ 'wp_upgrader' => 'wp-admin/includes/class-wp-upgrader.php',
+ 'wp_users_list_table' => 'wp-admin/includes/class-wp-users-list-table.php',
+
+ // Classes in wp-admin/includes/deprecated.php.
+ 'wp_user_search' => 'wp-admin/includes/deprecated.php',
+ 'wp_privacy_data_export_requests_table' => 'wp-admin/includes/deprecated.php',
+ 'wp_privacy_data_removal_requests_table' => 'wp-admin/includes/deprecated.php',
+ );
+
+ /**
+ * Whether the autoloader has already been registered or not.
+ *
+ * Avoids registering the autoloader multiple times.
+ *
+ * @static
+ *
+ * @since x.x.x
+ *
+ * @access private
+ *
+ * @var bool
+ */
+ private static $registered = false;
+
+ /**
+ * Registers the autoloader.
+ *
+ * @since x.x.x
+ */
+ public static function register() {
+ // Bail early if already registered.
+ if ( self::$registered ) {
+ return;
+ }
+
+ /*
+ * Register the core WP autoloader at the front of the SPL stack so it is
+ * always tried first. External bundled libraries (WpOrg\Requests, sodium_compat,
+ * SimplePie) manage their own autoloaders through their existing registration
+ * points in class-wp-http.php, compat.php, and class-simplepie.php respectively;
+ * pre-registering them here would unconditionally load several thousand lines of
+ * library code on every request, including on servers where the native extension
+ * makes the compat shim unnecessary.
+ */
+ spl_autoload_register( array( __CLASS__, 'autoload_core' ), true, true );
+
+ self::$registered = true;
+ }
+
+ /**
+ * Autoload a WordPress class.
+ *
+ * @since x.x.x
+ *
+ * @param string $class_name Class name.
+ */
+ public static function autoload_core( string $class_name ) {
+ /*
+ * Handle all namespaced classes in one branch to avoid the strtolower() allocation
+ * and CLASSES_PATHS lookup on every namespaced class reference.
+ *
+ * Most namespaced classes (WpOrg\Requests\*, SimplePie\*, WordPress\AiClient\*)
+ * have their own autoloaders, so we return immediately. The one exception is
+ * Avifinfo\*: class-avif-info.php bundles all Avifinfo classes without registering
+ * a separate autoloader, so we must handle them here.
+ */
+ if ( str_contains( $class_name, '\\' ) ) {
+ if ( str_starts_with( $class_name, 'Avifinfo\\' ) ) {
+ require_once ABSPATH . 'wp-includes/class-avif-info.php';
+ }
+ return;
+ }
+
+ // Lowercase the class name as PHP isn't case sensitive.
+ $class_name = strtolower( $class_name );
+
+ /*
+ * Hot path: the vast majority of calls are for WP core classes in the classmap.
+ *
+ * Use require_once rather than require because some files define more than one class
+ * (e.g. class-json.php defines Services_JSON and Services_JSON_Error). When PHP
+ * autoloads the second class from such a file it would otherwise try to include the
+ * file a second time, causing a fatal "Cannot redeclare class" error.
+ */
+ if ( isset( self::CLASSES_PATHS[ $class_name ] ) ) {
+ require_once ABSPATH . self::CLASSES_PATHS[ $class_name ];
+ return;
+ }
+
+ /*
+ * Cold path: legacy unnamespaced SimplePie classes (e.g. SimplePie_Enclosure).
+ * Namespaced SimplePie\* classes are excluded by the str_contains branch above.
+ */
+ if ( str_starts_with( $class_name, 'simplepie' ) ) {
+ require_once ABSPATH . 'wp-includes/class-simplepie.php';
+ }
+ }
+}
diff --git a/src/wp-includes/class-wp-customize-control.php b/src/wp-includes/class-wp-customize-control.php
index 43f0ac6d4ca64..b7a6699f722ba 100644
--- a/src/wp-includes/class-wp-customize-control.php
+++ b/src/wp-includes/class-wp-customize-control.php
@@ -709,109 +709,3 @@ final public function print_template() {
*/
protected function content_template() {}
}
-
-/**
- * WP_Customize_Color_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-color-control.php';
-
-/**
- * WP_Customize_Media_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-media-control.php';
-
-/**
- * WP_Customize_Upload_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-upload-control.php';
-
-/**
- * WP_Customize_Image_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-image-control.php';
-
-/**
- * WP_Customize_Background_Image_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-background-image-control.php';
-
-/**
- * WP_Customize_Background_Position_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-background-position-control.php';
-
-/**
- * WP_Customize_Cropped_Image_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-cropped-image-control.php';
-
-/**
- * WP_Customize_Site_Icon_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-site-icon-control.php';
-
-/**
- * WP_Customize_Header_Image_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-header-image-control.php';
-
-/**
- * WP_Customize_Theme_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-theme-control.php';
-
-/**
- * WP_Widget_Area_Customize_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-widget-area-customize-control.php';
-
-/**
- * WP_Widget_Form_Customize_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-widget-form-customize-control.php';
-
-/**
- * WP_Customize_Nav_Menu_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-control.php';
-
-/**
- * WP_Customize_Nav_Menu_Item_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-item-control.php';
-
-/**
- * WP_Customize_Nav_Menu_Location_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-location-control.php';
-
-/**
- * WP_Customize_Nav_Menu_Name_Control class.
- *
- * As this file is deprecated, it will trigger a deprecation notice if instantiated. In a subsequent
- * release, the require_once here will be removed and _deprecated_file() will be called if file is
- * required at all.
- *
- * @deprecated 4.9.0 This file is no longer used due to new menu creation UX.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-name-control.php';
-
-/**
- * WP_Customize_Nav_Menu_Locations_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-locations-control.php';
-
-/**
- * WP_Customize_Nav_Menu_Auto_Add_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-auto-add-control.php';
-
-/**
- * WP_Customize_Date_Time_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-date-time-control.php';
-
-/**
- * WP_Sidebar_Block_Editor_Control class.
- */
-require_once ABSPATH . WPINC . '/customize/class-wp-sidebar-block-editor-control.php';
diff --git a/src/wp-includes/class-wp-customize-manager.php b/src/wp-includes/class-wp-customize-manager.php
index 53dceecf69bd0..1503eb24c8354 100644
--- a/src/wp-includes/class-wp-customize-manager.php
+++ b/src/wp-includes/class-wp-customize-manager.php
@@ -302,45 +302,6 @@ public function __construct( $args = array() ) {
}
}
- require_once ABSPATH . WPINC . '/class-wp-customize-setting.php';
- require_once ABSPATH . WPINC . '/class-wp-customize-panel.php';
- require_once ABSPATH . WPINC . '/class-wp-customize-section.php';
- require_once ABSPATH . WPINC . '/class-wp-customize-control.php';
-
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-color-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-media-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-upload-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-image-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-background-image-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-background-position-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-cropped-image-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-site-icon-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-header-image-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-theme-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-code-editor-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-widget-area-customize-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-widget-form-customize-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-item-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-location-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-name-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-locations-control.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-auto-add-control.php';
-
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menus-panel.php';
-
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-themes-panel.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-themes-section.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-sidebar-section.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-section.php';
-
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-custom-css-setting.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-filter-setting.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-header-image-setting.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-background-image-setting.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-item-setting.php';
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-setting.php';
-
/**
* Filters the core Customizer components to load.
*
@@ -358,16 +319,13 @@ public function __construct( $args = array() ) {
*/
$components = apply_filters( 'customize_loaded_components', $this->components, $this );
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-selective-refresh.php';
$this->selective_refresh = new WP_Customize_Selective_Refresh( $this );
if ( in_array( 'widgets', $components, true ) ) {
- require_once ABSPATH . WPINC . '/class-wp-customize-widgets.php';
$this->widgets = new WP_Customize_Widgets( $this );
}
if ( in_array( 'nav_menus', $components, true ) ) {
- require_once ABSPATH . WPINC . '/class-wp-customize-nav-menus.php';
$this->nav_menus = new WP_Customize_Nav_Menus( $this );
}
diff --git a/src/wp-includes/class-wp-customize-panel.php b/src/wp-includes/class-wp-customize-panel.php
index 4f2cb05b3c362..56014f961a0af 100644
--- a/src/wp-includes/class-wp-customize-panel.php
+++ b/src/wp-includes/class-wp-customize-panel.php
@@ -407,6 +407,3 @@ protected function content_template() {
is_initialized() ) {
diff --git a/src/wp-includes/class.wp-dependencies.php b/src/wp-includes/class.wp-dependencies.php
index 631ed9e93e66f..7eba5f7556e02 100644
--- a/src/wp-includes/class.wp-dependencies.php
+++ b/src/wp-includes/class.wp-dependencies.php
@@ -9,6 +9,3 @@
*/
_deprecated_file( basename( __FILE__ ), '6.1.0', WPINC . '/class-wp-dependencies.php' );
-
-/** WP_Dependencies class */
-require_once ABSPATH . WPINC . '/class-wp-dependencies.php';
diff --git a/src/wp-includes/class.wp-scripts.php b/src/wp-includes/class.wp-scripts.php
index 30e2d31126e69..cf58e73146683 100644
--- a/src/wp-includes/class.wp-scripts.php
+++ b/src/wp-includes/class.wp-scripts.php
@@ -9,6 +9,3 @@
*/
_deprecated_file( basename( __FILE__ ), '6.1.0', WPINC . '/class-wp-scripts.php' );
-
-/** WP_Scripts class */
-require_once ABSPATH . WPINC . '/class-wp-scripts.php';
diff --git a/src/wp-includes/class.wp-styles.php b/src/wp-includes/class.wp-styles.php
index 1a33a9e6b0cd6..7a79dc91ec3da 100644
--- a/src/wp-includes/class.wp-styles.php
+++ b/src/wp-includes/class.wp-styles.php
@@ -9,6 +9,3 @@
*/
_deprecated_file( basename( __FILE__ ), '6.1.0', WPINC . '/class-wp-styles.php' );
-
-/** WP_Styles class */
-require_once ABSPATH . WPINC . '/class-wp-styles.php';
diff --git a/src/wp-includes/comment.php b/src/wp-includes/comment.php
index 70d5c03b378f4..3a3c1bc8d55e7 100644
--- a/src/wp-includes/comment.php
+++ b/src/wp-includes/comment.php
@@ -3253,9 +3253,6 @@ function wp_maybe_disable_xmlrpc_pingback_for_environment( $methods ) {
* @return array An array of pingback statuses indexed by link.
*/
function pingback( $content, $post ) {
- require_once ABSPATH . WPINC . '/class-IXR.php';
- require_once ABSPATH . WPINC . '/class-wp-http-ixr-client.php';
-
// Original code by Mort (http://mort.mine.nu:8080).
$post_links = array();
@@ -3429,8 +3426,6 @@ function trackback( $trackback_url, $title, $excerpt, $post_id ) {
* @param string $path Path to send the ping.
*/
function weblog_ping( $server = '', $path = '' ) {
- require_once ABSPATH . WPINC . '/class-IXR.php';
- require_once ABSPATH . WPINC . '/class-wp-http-ixr-client.php';
// Using a timeout of 3 seconds should be enough to cover slow servers.
$client = new WP_HTTP_IXR_Client( $server, ( ( ! strlen( trim( $path ) ) || ( '/' === $path ) ) ? false : $path ) );
diff --git a/src/wp-includes/customize/class-wp-customize-header-image-setting.php b/src/wp-includes/customize/class-wp-customize-header-image-setting.php
index 009e2e606f7ff..64d44282d6205 100644
--- a/src/wp-includes/customize/class-wp-customize-header-image-setting.php
+++ b/src/wp-includes/customize/class-wp-customize-header-image-setting.php
@@ -40,7 +40,6 @@ public function update( $value ) {
// If _custom_header_background_just_in_time() fails to initialize $custom_image_header when not is_admin().
if ( empty( $custom_image_header ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-custom-image-header.php';
$args = get_theme_support( 'custom-header' );
$admin_head_callback = $args[0]['admin-head-callback'] ?? null;
$admin_preview_callback = $args[0]['admin-preview-callback'] ?? null;
diff --git a/src/wp-includes/customize/class-wp-customize-selective-refresh.php b/src/wp-includes/customize/class-wp-customize-selective-refresh.php
index f51b1e6dc7627..9dafa897f6bda 100644
--- a/src/wp-includes/customize/class-wp-customize-selective-refresh.php
+++ b/src/wp-includes/customize/class-wp-customize-selective-refresh.php
@@ -63,8 +63,6 @@ final class WP_Customize_Selective_Refresh {
*/
public function __construct( WP_Customize_Manager $manager ) {
$this->manager = $manager;
- require_once ABSPATH . WPINC . '/customize/class-wp-customize-partial.php';
-
add_action( 'customize_preview_init', array( $this, 'init_preview' ) );
}
diff --git a/src/wp-includes/date.php b/src/wp-includes/date.php
index 425e72005f30e..19b7699e41b7f 100644
--- a/src/wp-includes/date.php
+++ b/src/wp-includes/date.php
@@ -9,6 +9,3 @@
*/
_deprecated_file( basename( __FILE__ ), '5.3.0', WPINC . '/class-wp-date-query.php' );
-
-/** WP_Date_Query class */
-require_once ABSPATH . WPINC . '/class-wp-date-query.php';
diff --git a/src/wp-includes/default-widgets.php b/src/wp-includes/default-widgets.php
index cbb25de8f0a4e..4faac203a5c12 100644
--- a/src/wp-includes/default-widgets.php
+++ b/src/wp-includes/default-widgets.php
@@ -6,68 +6,3 @@
* @subpackage Widgets
* @since 2.8.0
*/
-
-// Don't load directly.
-if ( ! defined( 'ABSPATH' ) ) {
- die( '-1' );
-}
-
-/** WP_Widget_Pages class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-pages.php';
-
-/** WP_Widget_Links class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-links.php';
-
-/** WP_Widget_Search class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-search.php';
-
-/** WP_Widget_Archives class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-archives.php';
-
-/** WP_Widget_Media class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-media.php';
-
-/** WP_Widget_Media_Audio class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-media-audio.php';
-
-/** WP_Widget_Media_Image class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-media-image.php';
-
-/** WP_Widget_Media_Video class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-media-video.php';
-
-/** WP_Widget_Media_Gallery class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-media-gallery.php';
-
-/** WP_Widget_Meta class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-meta.php';
-
-/** WP_Widget_Calendar class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-calendar.php';
-
-/** WP_Widget_Text class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-text.php';
-
-/** WP_Widget_Categories class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-categories.php';
-
-/** WP_Widget_Recent_Posts class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-recent-posts.php';
-
-/** WP_Widget_Recent_Comments class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-recent-comments.php';
-
-/** WP_Widget_RSS class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-rss.php';
-
-/** WP_Widget_Tag_Cloud class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-tag-cloud.php';
-
-/** WP_Nav_Menu_Widget class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-nav-menu-widget.php';
-
-/** WP_Widget_Custom_HTML class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-custom-html.php';
-
-/** WP_Widget_Block class */
-require_once ABSPATH . WPINC . '/widgets/class-wp-widget-block.php';
diff --git a/src/wp-includes/feed.php b/src/wp-includes/feed.php
index 821a3eb9be804..cdd8ed77e9428 100644
--- a/src/wp-includes/feed.php
+++ b/src/wp-includes/feed.php
@@ -802,14 +802,18 @@ function feed_content_type( $type = '' ) {
* @return SimplePie\SimplePie|WP_Error SimplePie object on success or WP_Error object on failure.
*/
function fetch_feed( $url ) {
+ /*
+ * Explicitly bootstrap SimplePie's PSR-4 autoloader before using the namespaced API.
+ * class-simplepie.php registers SimplePie's own autoloader (for SimplePie\* → src/)
+ * and the legacy shim (for old-style SimplePie_* → library/), which also defines the
+ * SIMPLEPIE_* backward-compatibility constants. Without this, the WP_Autoload
+ * handler fires for "simplepie\simplepie", hits require_once as a no-op on re-entry,
+ * and SimplePie\SimplePie cannot be resolved.
+ */
if ( ! class_exists( 'SimplePie\SimplePie', false ) ) {
require_once ABSPATH . WPINC . '/class-simplepie.php';
}
- require_once ABSPATH . WPINC . '/class-wp-feed-cache-transient.php';
- require_once ABSPATH . WPINC . '/class-wp-simplepie-file.php';
- require_once ABSPATH . WPINC . '/class-wp-simplepie-sanitize-kses.php';
-
$feed = new SimplePie\SimplePie();
$feed->get_registry()->register( SimplePie\Sanitize::class, 'WP_SimplePie_Sanitize_KSES', true );
@@ -826,7 +830,6 @@ function fetch_feed( $url ) {
$feed->set_cache_location( 'wp_transient' );
} else {
// Back-compat for SimplePie 1.2.x.
- require_once ABSPATH . WPINC . '/class-wp-feed-cache.php';
$feed->set_cache_class( 'WP_Feed_Cache' );
}
diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php
index 93b4df2df4505..ec8f0da8a5bde 100644
--- a/src/wp-includes/functions.php
+++ b/src/wp-includes/functions.php
@@ -889,7 +889,6 @@ function do_enclose( $content, $post ) {
global $wpdb;
// @todo Tidy this code and make the debug code optional.
- require_once ABSPATH . WPINC . '/class-IXR.php';
$post = get_post( $post );
if ( ! $post ) {
@@ -5451,8 +5450,6 @@ function wp_maybe_load_widgets() {
return;
}
- require_once ABSPATH . WPINC . '/default-widgets.php';
-
add_action( '_admin_menu', 'wp_widgets_add_menu' );
}
diff --git a/src/wp-includes/general-template.php b/src/wp-includes/general-template.php
index 01aefa370b5f1..34f5159a3acd4 100644
--- a/src/wp-includes/general-template.php
+++ b/src/wp-includes/general-template.php
@@ -3990,9 +3990,6 @@ function wp_default_editor() {
* @param array $settings See _WP_Editors::parse_settings() for description.
*/
function wp_editor( $content, $editor_id, $settings = array() ) {
- if ( ! class_exists( '_WP_Editors', false ) ) {
- require ABSPATH . WPINC . '/class-wp-editor.php';
- }
_WP_Editors::editor( $content, $editor_id, $settings );
}
@@ -4006,10 +4003,6 @@ function wp_editor( $content, $editor_id, $settings = array() ) {
* @since 4.8.0
*/
function wp_enqueue_editor() {
- if ( ! class_exists( '_WP_Editors', false ) ) {
- require ABSPATH . WPINC . '/class-wp-editor.php';
- }
-
_WP_Editors::enqueue_default_editor();
}
diff --git a/src/wp-includes/load.php b/src/wp-includes/load.php
index 27c58b57dd671..636e47e528be8 100644
--- a/src/wp-includes/load.php
+++ b/src/wp-includes/load.php
@@ -1539,16 +1539,7 @@ function wp_load_translations_early() {
require ABSPATH . WPINC . '/version.php';
// Translation and localization.
- require_once ABSPATH . WPINC . '/pomo/mo.php';
- require_once ABSPATH . WPINC . '/l10n/class-wp-translation-controller.php';
- require_once ABSPATH . WPINC . '/l10n/class-wp-translations.php';
- require_once ABSPATH . WPINC . '/l10n/class-wp-translation-file.php';
- require_once ABSPATH . WPINC . '/l10n/class-wp-translation-file-mo.php';
- require_once ABSPATH . WPINC . '/l10n/class-wp-translation-file-php.php';
require_once ABSPATH . WPINC . '/l10n.php';
- require_once ABSPATH . WPINC . '/class-wp-textdomain-registry.php';
- require_once ABSPATH . WPINC . '/class-wp-locale.php';
- require_once ABSPATH . WPINC . '/class-wp-locale-switcher.php';
// General libraries.
require_once ABSPATH . WPINC . '/plugin.php';
diff --git a/src/wp-includes/media.php b/src/wp-includes/media.php
index eb28db81d6ce9..664246040ddae 100644
--- a/src/wp-includes/media.php
+++ b/src/wp-includes/media.php
@@ -4318,10 +4318,6 @@ function wp_image_editor_supports( $args = array() ) {
* False if no editor claims to support the request.
*/
function _wp_image_editor_choose( $args = array() ) {
- require_once ABSPATH . WPINC . '/class-wp-image-editor.php';
- require_once ABSPATH . WPINC . '/class-wp-image-editor-gd.php';
- require_once ABSPATH . WPINC . '/class-wp-image-editor-imagick.php';
- require_once ABSPATH . WPINC . '/class-avif-info.php';
/**
* Filters the list of image editing library classes.
*
@@ -5927,8 +5923,6 @@ function wp_get_avif_info( $filename ) {
}
// Parse the file using libavifinfo's PHP implementation.
- require_once ABSPATH . WPINC . '/class-avif-info.php';
-
$handle = fopen( $filename, 'rb' );
if ( $handle ) {
$parser = new Avifinfo\Parser( $handle );
diff --git a/src/wp-includes/meta.php b/src/wp-includes/meta.php
index c657c6c2e7af3..bd5bd1461dde6 100644
--- a/src/wp-includes/meta.php
+++ b/src/wp-includes/meta.php
@@ -10,8 +10,6 @@
* @subpackage Meta
*/
-require ABSPATH . WPINC . '/class-wp-metadata-lazyloader.php';
-
/**
* Adds metadata for the specified object.
*
diff --git a/src/wp-includes/ms-settings.php b/src/wp-includes/ms-settings.php
index 4f9d9e35792b3..c2f64c247e471 100644
--- a/src/wp-includes/ms-settings.php
+++ b/src/wp-includes/ms-settings.php
@@ -36,12 +36,6 @@
*/
global $current_site, $current_blog, $domain, $path, $site_id, $public;
-/** WP_Network class */
-require_once ABSPATH . WPINC . '/class-wp-network.php';
-
-/** WP_Site class */
-require_once ABSPATH . WPINC . '/class-wp-site.php';
-
/** Multisite loader */
require_once ABSPATH . WPINC . '/ms-load.php';
diff --git a/src/wp-includes/nav-menu-template.php b/src/wp-includes/nav-menu-template.php
index d90fdfa8061ab..80f42dc4d6390 100644
--- a/src/wp-includes/nav-menu-template.php
+++ b/src/wp-includes/nav-menu-template.php
@@ -7,14 +7,6 @@
* @since 3.0.0
*/
-// Don't load directly.
-if ( ! defined( 'ABSPATH' ) ) {
- die( '-1' );
-}
-
-/** Walker_Nav_Menu class */
-require_once ABSPATH . WPINC . '/class-walker-nav-menu.php';
-
/**
* Displays a navigation menu.
*
diff --git a/src/wp-includes/pluggable.php b/src/wp-includes/pluggable.php
index fd659b600c379..825615fb99a67 100644
--- a/src/wp-includes/pluggable.php
+++ b/src/wp-includes/pluggable.php
@@ -2859,7 +2859,6 @@ function wp_check_password(
$check = password_verify( $password_to_verify, substr( $hash, 3 ) );
} elseif ( str_starts_with( $hash, '$P$' ) ) {
// Check the password using phpass.
- require_once ABSPATH . WPINC . '/class-phpass.php';
$check = ( new PasswordHash( 8, true ) )->CheckPassword( $password, $hash );
} else {
// Check the password using compat support for any non-prefixed hash.
diff --git a/src/wp-includes/plugin.php b/src/wp-includes/plugin.php
index 55459c0dd96c8..4c688c3e66995 100644
--- a/src/wp-includes/plugin.php
+++ b/src/wp-includes/plugin.php
@@ -22,8 +22,10 @@
*/
// Initialize the filter globals.
-require __DIR__ . '/class-wp-hook.php';
-require __DIR__ . '/class-wp-filter-sentinel.php';
+if ( ! class_exists( 'WP_Autoload' ) ) {
+ require __DIR__ . '/class-wp-hook.php';
+ require __DIR__ . '/class-wp-filter-sentinel.php';
+}
/** @var WP_Hook[] $wp_filter */
global $wp_filter;
diff --git a/src/wp-includes/pomo/mo.php b/src/wp-includes/pomo/mo.php
index 1bbc40ab65aa2..9c2dd593789f7 100644
--- a/src/wp-includes/pomo/mo.php
+++ b/src/wp-includes/pomo/mo.php
@@ -7,9 +7,6 @@
* @subpackage mo
*/
-require_once __DIR__ . '/translations.php';
-require_once __DIR__ . '/streams.php';
-
if ( ! class_exists( 'MO', false ) ) :
class MO extends Gettext_Translations {
diff --git a/src/wp-includes/pomo/po.php b/src/wp-includes/pomo/po.php
index c43544e142a07..7ff8eab4b57d2 100644
--- a/src/wp-includes/pomo/po.php
+++ b/src/wp-includes/pomo/po.php
@@ -7,8 +7,6 @@
* @subpackage po
*/
-require_once __DIR__ . '/translations.php';
-
if ( ! defined( 'PO_MAX_LINE_LEN' ) ) {
define( 'PO_MAX_LINE_LEN', 79 );
}
diff --git a/src/wp-includes/pomo/translations.php b/src/wp-includes/pomo/translations.php
index c4a9ba72d6755..74c3fc2d09426 100644
--- a/src/wp-includes/pomo/translations.php
+++ b/src/wp-includes/pomo/translations.php
@@ -8,9 +8,6 @@
* @since 2.8.0
*/
-require_once __DIR__ . '/plural-forms.php';
-require_once __DIR__ . '/entry.php';
-
if ( ! class_exists( 'Translations', false ) ) :
/**
* Translations class.
diff --git a/src/wp-includes/post-template.php b/src/wp-includes/post-template.php
index 2429ab3adb776..398cd1f6e41aa 100644
--- a/src/wp-includes/post-template.php
+++ b/src/wp-includes/post-template.php
@@ -892,7 +892,6 @@ function post_password_required( $post = null ) {
return apply_filters( 'post_password_required', true, $post );
}
- require_once ABSPATH . WPINC . '/class-phpass.php';
$hasher = new PasswordHash( 8, true );
$hash = wp_unslash( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] );
diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-plugins-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-plugins-controller.php
index d0dd5fce4cd9c..e4d59b3277059 100644
--- a/src/wp-includes/rest-api/endpoints/class-wp-rest-plugins-controller.php
+++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-plugins-controller.php
@@ -275,7 +275,6 @@ public function create_item( $request ) {
require_once ABSPATH . 'wp-admin/includes/file.php';
require_once ABSPATH . 'wp-admin/includes/plugin.php';
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
require_once ABSPATH . 'wp-admin/includes/plugin-install.php';
$slug = $request['slug'];
diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-site-health-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-site-health-controller.php
index 41e15337add5f..1d2a22b90edcf 100644
--- a/src/wp-includes/rest-api/endpoints/class-wp-rest-site-health-controller.php
+++ b/src/wp-includes/rest-api/endpoints/class-wp-rest-site-health-controller.php
@@ -281,10 +281,6 @@ public function test_page_cache() {
* @return array|WP_Error
*/
public function get_directory_sizes() {
- if ( ! class_exists( 'WP_Debug_Data' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-debug-data.php';
- }
-
$this->load_admin_textdomain();
$sizes_data = WP_Debug_Data::get_sizes();
diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php
index 134d86c26a08a..15cf248b0f0be 100644
--- a/src/wp-includes/script-loader.php
+++ b/src/wp-includes/script-loader.php
@@ -16,21 +16,9 @@
* @package WordPress
*/
-/** WordPress Dependency Class */
-require ABSPATH . WPINC . '/class-wp-dependency.php';
-
-/** WordPress Dependencies Class */
-require ABSPATH . WPINC . '/class-wp-dependencies.php';
-
-/** WordPress Scripts Class */
-require ABSPATH . WPINC . '/class-wp-scripts.php';
-
/** WordPress Scripts Functions */
require ABSPATH . WPINC . '/functions.wp-scripts.php';
-/** WordPress Styles Class */
-require ABSPATH . WPINC . '/class-wp-styles.php';
-
/** WordPress Styles Functions */
require ABSPATH . WPINC . '/functions.wp-styles.php';
@@ -2044,8 +2032,6 @@ function wp_localize_community_events() {
return;
}
- require_once ABSPATH . 'wp-admin/includes/class-wp-community-events.php';
-
$user_id = get_current_user_id();
$saved_location = get_user_option( 'community-events-location', $user_id );
$saved_ip_address = $saved_location['ip'] ?? false;
diff --git a/src/wp-includes/session.php b/src/wp-includes/session.php
index df2a042ca6ce9..c0d12c686d2ef 100644
--- a/src/wp-includes/session.php
+++ b/src/wp-includes/session.php
@@ -7,6 +7,3 @@
*/
_deprecated_file( basename( __FILE__ ), '4.7.0' );
-
-require_once ABSPATH . WPINC . '/class-wp-session-tokens.php';
-require_once ABSPATH . WPINC . '/class-wp-user-meta-session-tokens.php';
diff --git a/src/wp-includes/theme.php b/src/wp-includes/theme.php
index 07869ae61d0ff..cce96378d0575 100644
--- a/src/wp-includes/theme.php
+++ b/src/wp-includes/theme.php
@@ -2965,7 +2965,6 @@ function _custom_header_background_just_in_time() {
}
if ( is_admin() ) {
- require_once ABSPATH . 'wp-admin/includes/class-custom-image-header.php';
$custom_image_header = new Custom_Image_Header( $args[0]['admin-head-callback'], $args[0]['admin-preview-callback'] );
}
}
@@ -2978,7 +2977,6 @@ function _custom_header_background_just_in_time() {
add_action( 'wp_head', $args[0]['wp-head-callback'] );
if ( is_admin() ) {
- require_once ABSPATH . 'wp-admin/includes/class-custom-background.php';
$custom_background = new Custom_Background( $args[0]['admin-head-callback'], $args[0]['admin-preview-callback'] );
}
}
@@ -3611,7 +3609,6 @@ function _wp_customize_include() {
);
$settings_previewed = ! $is_customize_save_action;
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$GLOBALS['wp_customize'] = new WP_Customize_Manager(
compact(
'changeset_uuid',
@@ -3651,7 +3648,6 @@ function _wp_customize_publish_changeset( $new_status, $old_status, $changeset_p
}
if ( empty( $wp_customize ) ) {
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$wp_customize = new WP_Customize_Manager(
array(
'changeset_uuid' => $changeset_post->post_name,
diff --git a/src/wp-includes/update.php b/src/wp-includes/update.php
index b7bf5a03780e7..dd0476d111c62 100644
--- a/src/wp-includes/update.php
+++ b/src/wp-includes/update.php
@@ -884,7 +884,6 @@ function wp_update_themes( $extra_stats = array() ) {
*/
function wp_maybe_auto_update() {
require_once ABSPATH . 'wp-admin/includes/admin.php';
- require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
$upgrader = new WP_Automatic_Updater();
$upgrader->run();
diff --git a/src/wp-includes/wp-db.php b/src/wp-includes/wp-db.php
index 73a01113438db..82198800b8159 100644
--- a/src/wp-includes/wp-db.php
+++ b/src/wp-includes/wp-db.php
@@ -12,6 +12,3 @@
// Note: WPINC may not be defined yet, so 'wp-includes' is used here.
_deprecated_file( basename( __FILE__ ), '6.1.0', 'wp-includes/class-wpdb.php' );
}
-
-/** wpdb class */
-require_once __DIR__ . '/class-wpdb.php';
diff --git a/src/wp-includes/wp-diff.php b/src/wp-includes/wp-diff.php
index e99a001ecb233..1cdda36e09753 100644
--- a/src/wp-includes/wp-diff.php
+++ b/src/wp-includes/wp-diff.php
@@ -7,22 +7,3 @@
* @package WordPress
* @subpackage Diff
*/
-
-// Don't load directly.
-if ( ! defined( 'ABSPATH' ) ) {
- die( '-1' );
-}
-
-if ( ! class_exists( 'Text_Diff', false ) ) {
- /** Text_Diff class */
- require ABSPATH . WPINC . '/Text/Diff.php';
- /** Text_Diff_Renderer class */
- require ABSPATH . WPINC . '/Text/Diff/Renderer.php';
- /** Text_Diff_Renderer_inline class */
- require ABSPATH . WPINC . '/Text/Diff/Renderer/inline.php';
- /** Text_Exception class */
- require ABSPATH . WPINC . '/Text/Exception.php';
-}
-
-require ABSPATH . WPINC . '/class-wp-text-diff-renderer-table.php';
-require ABSPATH . WPINC . '/class-wp-text-diff-renderer-inline.php';
diff --git a/src/wp-load.php b/src/wp-load.php
index 40c141f74034b..41ee8c18031a7 100644
--- a/src/wp-load.php
+++ b/src/wp-load.php
@@ -21,6 +21,13 @@
define( 'ABSPATH', __DIR__ . '/' );
}
+if ( ! defined( 'WPINC' ) ) {
+ define( 'WPINC', 'wp-includes' );
+}
+
+require_once ABSPATH . WPINC . '/class-wp-autoload.php';
+WP_Autoload::register();
+
/*
* The error_reporting() function can be disabled in php.ini. On systems where that is the case,
* it's best to add a dummy function to the wp-config.php file, but as this call to the function
@@ -58,7 +65,6 @@
// A config file doesn't exist.
- define( 'WPINC', 'wp-includes' );
require_once ABSPATH . WPINC . '/version.php';
require_once ABSPATH . WPINC . '/compat.php';
require_once ABSPATH . WPINC . '/load.php';
diff --git a/src/wp-login.php b/src/wp-login.php
index abedea82c3589..0886512dc369d 100644
--- a/src/wp-login.php
+++ b/src/wp-login.php
@@ -771,7 +771,6 @@ function wp_login_viewport_meta() {
exit;
}
- require_once ABSPATH . WPINC . '/class-phpass.php';
$hasher = new PasswordHash( 8, true );
/**
diff --git a/src/wp-mail.php b/src/wp-mail.php
index 3f39de4264fe5..44cdb872c742c 100644
--- a/src/wp-mail.php
+++ b/src/wp-mail.php
@@ -28,9 +28,6 @@
*/
do_action( 'wp-mail.php' ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
-/** Get the POP3 class with which to access the mailbox. */
-require_once ABSPATH . WPINC . '/class-pop3.php';
-
/** Only check at this interval for new messages. */
if ( ! defined( 'WP_MAIL_INTERVAL' ) ) {
define( 'WP_MAIL_INTERVAL', 5 * MINUTE_IN_SECONDS );
diff --git a/src/wp-settings.php b/src/wp-settings.php
index 0935e2762619c..7f613bb9deb2b 100644
--- a/src/wp-settings.php
+++ b/src/wp-settings.php
@@ -13,7 +13,18 @@
*
* @since 1.0.0
*/
-define( 'WPINC', 'wp-includes' );
+if ( ! defined( 'WPINC' ) ) {
+ define( 'WPINC', 'wp-includes' );
+}
+
+/*
+ * Load the autoloader. wp-load.php and setup-config.php also include this file
+ * directly before loading wp-settings.php. This require_once here acts as a
+ * safety net for any bootstrap path (e.g. WP-CLI, test frameworks) that loads
+ * wp-config.php → wp-settings.php without going through wp-load.php first.
+ */
+require_once ABSPATH . WPINC . '/class-wp-autoload.php';
+WP_Autoload::register();
/**
* Version information for the current WordPress release.
@@ -40,14 +51,6 @@
wp_check_php_mysql_versions();
// Include files required for initialization.
-require ABSPATH . WPINC . '/class-wp-paused-extensions-storage.php';
-require ABSPATH . WPINC . '/class-wp-exception.php';
-require ABSPATH . WPINC . '/class-wp-fatal-error-handler.php';
-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';
require ABSPATH . WPINC . '/error-protection.php';
require ABSPATH . WPINC . '/default-constants.php';
require_once ABSPATH . WPINC . '/plugin.php';
@@ -109,22 +112,10 @@
wp_set_lang_dir();
// Load early WordPress files.
-require ABSPATH . WPINC . '/class-wp-list-util.php';
-require ABSPATH . WPINC . '/class-wp-token-map.php';
require ABSPATH . WPINC . '/utf8.php';
require ABSPATH . WPINC . '/formatting.php';
require ABSPATH . WPINC . '/meta.php';
require ABSPATH . WPINC . '/functions.php';
-require ABSPATH . WPINC . '/class-wp-meta-query.php';
-require ABSPATH . WPINC . '/class-wp-matchesmapregex.php';
-require ABSPATH . WPINC . '/class-wp.php';
-require ABSPATH . WPINC . '/class-wp-error.php';
-require ABSPATH . WPINC . '/pomo/mo.php';
-require ABSPATH . WPINC . '/l10n/class-wp-translation-controller.php';
-require ABSPATH . WPINC . '/l10n/class-wp-translations.php';
-require ABSPATH . WPINC . '/l10n/class-wp-translation-file.php';
-require ABSPATH . WPINC . '/l10n/class-wp-translation-file-mo.php';
-require ABSPATH . WPINC . '/l10n/class-wp-translation-file-php.php';
/**
* @since 0.71
@@ -155,8 +146,6 @@
// Initialize multisite if enabled.
if ( is_multisite() ) {
- require ABSPATH . WPINC . '/class-wp-site-query.php';
- require ABSPATH . WPINC . '/class-wp-network-query.php';
require ABSPATH . WPINC . '/ms-blogs.php';
require ABSPATH . WPINC . '/ms-settings.php';
} elseif ( ! defined( 'MULTISITE' ) ) {
@@ -172,33 +161,15 @@
// Load the L10n library.
require_once ABSPATH . WPINC . '/l10n.php';
-require_once ABSPATH . WPINC . '/class-wp-textdomain-registry.php';
-require_once ABSPATH . WPINC . '/class-wp-locale.php';
-require_once ABSPATH . WPINC . '/class-wp-locale-switcher.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 . '/capabilities.php';
-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';
require ABSPATH . WPINC . '/query.php';
-require ABSPATH . WPINC . '/class-wp-date-query.php';
require ABSPATH . WPINC . '/theme.php';
-require ABSPATH . WPINC . '/class-wp-theme.php';
-require ABSPATH . WPINC . '/class-wp-theme-json-schema.php';
-require ABSPATH . WPINC . '/class-wp-theme-json-data.php';
-require ABSPATH . WPINC . '/class-wp-theme-json.php';
-require ABSPATH . WPINC . '/class-wp-theme-json-resolver.php';
-require ABSPATH . WPINC . '/class-wp-duotone.php';
require ABSPATH . WPINC . '/global-styles-and-settings.php';
-require ABSPATH . WPINC . '/class-wp-block-template.php';
-require ABSPATH . WPINC . '/class-wp-block-templates-registry.php';
require ABSPATH . WPINC . '/block-template-utils.php';
require ABSPATH . WPINC . '/block-template.php';
require ABSPATH . WPINC . '/theme-templates.php';
@@ -206,35 +177,21 @@
require ABSPATH . WPINC . '/template.php';
require ABSPATH . WPINC . '/https-detection.php';
require ABSPATH . WPINC . '/https-migration.php';
-require ABSPATH . WPINC . '/class-wp-user-request.php';
require ABSPATH . WPINC . '/user.php';
-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 . '/general-template.php';
require ABSPATH . WPINC . '/link-template.php';
require ABSPATH . WPINC . '/author-template.php';
require ABSPATH . WPINC . '/robots-template.php';
require ABSPATH . WPINC . '/post.php';
-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';
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 . '/class-walker-category.php';
-require ABSPATH . WPINC . '/class-walker-category-dropdown.php';
require ABSPATH . WPINC . '/category-template.php';
require ABSPATH . WPINC . '/comment.php';
-require ABSPATH . WPINC . '/class-wp-comment.php';
-require ABSPATH . WPINC . '/class-wp-comment-query.php';
-require ABSPATH . WPINC . '/class-walker-comment.php';
require ABSPATH . WPINC . '/comment-template.php';
require ABSPATH . WPINC . '/rewrite.php';
-require ABSPATH . WPINC . '/class-wp-rewrite.php';
require ABSPATH . WPINC . '/feed.php';
require ABSPATH . WPINC . '/bookmark.php';
require ABSPATH . WPINC . '/bookmark-template.php';
@@ -249,151 +206,31 @@
require ABSPATH . WPINC . '/build/pages.php';
}
require ABSPATH . WPINC . '/taxonomy.php';
-require ABSPATH . WPINC . '/class-wp-taxonomy.php';
-require ABSPATH . WPINC . '/class-wp-term.php';
-require ABSPATH . WPINC . '/class-wp-term-query.php';
-require ABSPATH . WPINC . '/class-wp-tax-query.php';
require ABSPATH . WPINC . '/update.php';
require ABSPATH . WPINC . '/canonical.php';
require ABSPATH . WPINC . '/shortcodes.php';
require ABSPATH . WPINC . '/embed.php';
-require ABSPATH . WPINC . '/class-wp-embed.php';
-require ABSPATH . WPINC . '/class-wp-oembed.php';
-require ABSPATH . WPINC . '/class-wp-oembed-controller.php';
require ABSPATH . WPINC . '/media.php';
+/*
+ * class-wp-http.php is loaded explicitly here rather than via WP_Autoload because
+ * its top-level code registers the WpOrg\Requests autoloader and sets the TLS
+ * certificate path — side effects that must run at bootstrap time, before any
+ * HTTP request is made or any WpOrg\Requests\* class is referenced.
+ */
+require ABSPATH . WPINC . '/class-wp-http.php';
require ABSPATH . WPINC . '/http.php';
require ABSPATH . WPINC . '/html-api/html5-named-character-references.php';
-require ABSPATH . WPINC . '/html-api/class-wp-html-attribute-token.php';
-require ABSPATH . WPINC . '/html-api/class-wp-html-span.php';
-require ABSPATH . WPINC . '/html-api/class-wp-html-doctype-info.php';
-require ABSPATH . WPINC . '/html-api/class-wp-html-text-replacement.php';
-require ABSPATH . WPINC . '/html-api/class-wp-html-decoder.php';
-require ABSPATH . WPINC . '/html-api/class-wp-html-tag-processor.php';
-require ABSPATH . WPINC . '/html-api/class-wp-html-unsupported-exception.php';
-require ABSPATH . WPINC . '/html-api/class-wp-html-active-formatting-elements.php';
-require ABSPATH . WPINC . '/html-api/class-wp-html-open-elements.php';
-require ABSPATH . WPINC . '/html-api/class-wp-html-token.php';
-require ABSPATH . WPINC . '/html-api/class-wp-html-stack-event.php';
-require ABSPATH . WPINC . '/html-api/class-wp-html-processor-state.php';
-require ABSPATH . WPINC . '/html-api/class-wp-html-processor.php';
-require ABSPATH . WPINC . '/class-wp-block-processor.php';
-require ABSPATH . WPINC . '/class-wp-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';
-require ABSPATH . WPINC . '/class-wp-http-requests-hooks.php';
require ABSPATH . WPINC . '/php-ai-client/autoload.php';
-require ABSPATH . WPINC . '/ai-client/adapters/class-wp-ai-client-http-client.php';
-require ABSPATH . WPINC . '/ai-client/adapters/class-wp-ai-client-cache.php';
-require ABSPATH . WPINC . '/ai-client/adapters/class-wp-ai-client-discovery-strategy.php';
-require ABSPATH . WPINC . '/ai-client/adapters/class-wp-ai-client-event-dispatcher.php';
-require ABSPATH . WPINC . '/ai-client/class-wp-ai-client-ability-function-resolver.php';
-require ABSPATH . WPINC . '/ai-client/class-wp-ai-client-prompt-builder.php';
require ABSPATH . WPINC . '/ai-client.php';
-require ABSPATH . WPINC . '/class-wp-connector-registry.php';
require ABSPATH . WPINC . '/connectors.php';
-require ABSPATH . WPINC . '/class-wp-icons-registry.php';
require ABSPATH . WPINC . '/widgets.php';
-require ABSPATH . WPINC . '/class-wp-widget.php';
-require ABSPATH . WPINC . '/class-wp-widget-factory.php';
require ABSPATH . WPINC . '/nav-menu-template.php';
require ABSPATH . WPINC . '/nav-menu.php';
require ABSPATH . WPINC . '/admin-bar.php';
-require ABSPATH . WPINC . '/class-wp-application-passwords.php';
-require ABSPATH . WPINC . '/abilities-api/class-wp-ability-category.php';
-require ABSPATH . WPINC . '/abilities-api/class-wp-ability-categories-registry.php';
-require ABSPATH . WPINC . '/abilities-api/class-wp-ability.php';
-require ABSPATH . WPINC . '/abilities-api/class-wp-abilities-registry.php';
require ABSPATH . WPINC . '/abilities-api.php';
require ABSPATH . WPINC . '/abilities.php';
require ABSPATH . WPINC . '/rest-api.php';
-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';
-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-global-styles-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';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-global-styles-revisions-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-template-revisions-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-autosaves-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-template-autosaves-controller.php';
-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-menu-items-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-menus-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-menu-locations-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';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-search-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-blocks-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-block-types-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-block-renderer-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-settings-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-themes-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-plugins-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-block-directory-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-edit-site-export-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-pattern-directory-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-block-patterns-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-block-pattern-categories-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-application-passwords-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-site-health-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-sidebars-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-widget-types-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-widgets-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-templates-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-url-details-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-navigation-fallback-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-families-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-faces-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-font-collections-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-icons-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-categories-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-list-controller.php';
-require ABSPATH . WPINC . '/rest-api/endpoints/class-wp-rest-abilities-v1-run-controller.php';
-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';
-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';
-require ABSPATH . WPINC . '/rest-api/search/class-wp-rest-term-search-handler.php';
-require ABSPATH . WPINC . '/rest-api/search/class-wp-rest-post-format-search-handler.php';
require ABSPATH . WPINC . '/sitemaps.php';
-require ABSPATH . WPINC . '/sitemaps/class-wp-sitemaps.php';
-require ABSPATH . WPINC . '/sitemaps/class-wp-sitemaps-index.php';
-require ABSPATH . WPINC . '/sitemaps/class-wp-sitemaps-provider.php';
-require ABSPATH . WPINC . '/sitemaps/class-wp-sitemaps-registry.php';
-require ABSPATH . WPINC . '/sitemaps/class-wp-sitemaps-renderer.php';
-require ABSPATH . WPINC . '/sitemaps/class-wp-sitemaps-stylesheet.php';
-require ABSPATH . WPINC . '/sitemaps/providers/class-wp-sitemaps-posts.php';
-require ABSPATH . WPINC . '/sitemaps/providers/class-wp-sitemaps-taxonomies.php';
-require ABSPATH . WPINC . '/sitemaps/providers/class-wp-sitemaps-users.php';
-require ABSPATH . WPINC . '/class-wp-block-bindings-source.php';
-require ABSPATH . WPINC . '/class-wp-block-bindings-registry.php';
-require ABSPATH . WPINC . '/class-wp-block-editor-context.php';
-require ABSPATH . WPINC . '/class-wp-block-type.php';
-require ABSPATH . WPINC . '/class-wp-block-pattern-categories-registry.php';
-require ABSPATH . WPINC . '/class-wp-block-patterns-registry.php';
-require ABSPATH . WPINC . '/class-wp-block-styles-registry.php';
-require ABSPATH . WPINC . '/class-wp-block-type-registry.php';
-require ABSPATH . WPINC . '/class-wp-block.php';
-require ABSPATH . WPINC . '/class-wp-block-list.php';
-require ABSPATH . WPINC . '/class-wp-block-metadata-registry.php';
-require ABSPATH . WPINC . '/class-wp-block-parser-block.php';
-require ABSPATH . WPINC . '/class-wp-block-parser-frame.php';
-require ABSPATH . WPINC . '/class-wp-block-parser.php';
-require ABSPATH . WPINC . '/class-wp-classic-to-block-menu-converter.php';
-require ABSPATH . WPINC . '/class-wp-navigation-fallback.php';
require ABSPATH . WPINC . '/block-bindings.php';
require ABSPATH . WPINC . '/block-bindings/pattern-overrides.php';
require ABSPATH . WPINC . '/block-bindings/post-data.php';
@@ -403,7 +240,6 @@
require ABSPATH . WPINC . '/blocks/index.php';
require ABSPATH . WPINC . '/block-editor.php';
require ABSPATH . WPINC . '/block-patterns.php';
-require ABSPATH . WPINC . '/class-wp-block-supports.php';
require ABSPATH . WPINC . '/block-supports/utils.php';
require ABSPATH . WPINC . '/block-supports/align.php';
require ABSPATH . WPINC . '/block-supports/auto-register.php';
@@ -428,25 +264,9 @@
require ABSPATH . WPINC . '/block-supports/custom-css.php';
require ABSPATH . WPINC . '/block-supports/states.php';
require ABSPATH . WPINC . '/style-engine.php';
-require ABSPATH . WPINC . '/style-engine/class-wp-style-engine.php';
-require ABSPATH . WPINC . '/style-engine/class-wp-style-engine-css-declarations.php';
-require ABSPATH . WPINC . '/style-engine/class-wp-style-engine-css-rule.php';
-require ABSPATH . WPINC . '/style-engine/class-wp-style-engine-css-rules-store.php';
-require ABSPATH . WPINC . '/style-engine/class-wp-style-engine-processor.php';
-require ABSPATH . WPINC . '/fonts/class-wp-font-face-resolver.php';
-require ABSPATH . WPINC . '/fonts/class-wp-font-collection.php';
-require ABSPATH . WPINC . '/fonts/class-wp-font-face.php';
-require ABSPATH . WPINC . '/fonts/class-wp-font-library.php';
-require ABSPATH . WPINC . '/fonts/class-wp-font-utils.php';
require ABSPATH . WPINC . '/fonts.php';
-require ABSPATH . WPINC . '/class-wp-script-modules.php';
require ABSPATH . WPINC . '/script-modules.php';
-require ABSPATH . WPINC . '/interactivity-api/class-wp-interactivity-api.php';
-require ABSPATH . WPINC . '/interactivity-api/class-wp-interactivity-api-directives-processor.php';
require ABSPATH . WPINC . '/interactivity-api/interactivity-api.php';
-require ABSPATH . WPINC . '/class-wp-plugin-dependencies.php';
-require ABSPATH . WPINC . '/class-wp-url-pattern-prefixer.php';
-require ABSPATH . WPINC . '/class-wp-speculation-rules.php';
require ABSPATH . WPINC . '/speculative-loading.php';
require ABSPATH . WPINC . '/view-transitions.php';
@@ -750,9 +570,6 @@
do_action( 'after_setup_theme' );
// Create an instance of WP_Site_Health so that Cron events may fire.
-if ( ! class_exists( 'WP_Site_Health' ) ) {
- require_once ABSPATH . 'wp-admin/includes/class-wp-site-health.php';
-}
WP_Site_Health::get_instance();
// Set up current user.
diff --git a/src/xmlrpc.php b/src/xmlrpc.php
index ae73f687a2daa..c9b4a8d9935d8 100644
--- a/src/xmlrpc.php
+++ b/src/xmlrpc.php
@@ -60,8 +60,6 @@
}
require_once ABSPATH . 'wp-admin/includes/admin.php';
-require_once ABSPATH . WPINC . '/class-IXR.php';
-require_once ABSPATH . WPINC . '/class-wp-xmlrpc-server.php';
/**
* Posts submitted via the XML-RPC interface get that title
diff --git a/tests/phpunit/includes/abstract-testcase.php b/tests/phpunit/includes/abstract-testcase.php
index b8e8598362ec5..0c0e57fb6f2ce 100644
--- a/tests/phpunit/includes/abstract-testcase.php
+++ b/tests/phpunit/includes/abstract-testcase.php
@@ -68,6 +68,8 @@ public static function set_up_before_class() {
parent::set_up_before_class();
+ require_once ABSPATH . 'wp-includes/class-wp-autoload.php';
+
$wpdb->suppress_errors = false;
$wpdb->show_errors = true;
$wpdb->db_connect();
diff --git a/tests/phpunit/includes/testcase-xmlrpc.php b/tests/phpunit/includes/testcase-xmlrpc.php
index b27186d88be9b..2b89fbcd854fd 100644
--- a/tests/phpunit/includes/testcase-xmlrpc.php
+++ b/tests/phpunit/includes/testcase-xmlrpc.php
@@ -1,7 +1,5 @@
user->create( array( 'role' => 'editor' ) );
self::$user_ids[] = self::$editor_id;
@@ -698,7 +692,6 @@ public function test_new_user_link_does_not_exist_for_user_without_create_or_pro
*/
public function test_customize_link() {
global $wp_customize;
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$uuid = wp_generate_uuid4();
$this->go_to( home_url( "/?customize_changeset_uuid=$uuid" ) );
wp_set_current_user( self::$admin_id );
diff --git a/tests/phpunit/tests/ajax/wpAjaxCropImage.php b/tests/phpunit/tests/ajax/wpAjaxCropImage.php
index 3a23f3a425b50..5b99d371b45f0 100644
--- a/tests/phpunit/tests/ajax/wpAjaxCropImage.php
+++ b/tests/phpunit/tests/ajax/wpAjaxCropImage.php
@@ -4,8 +4,6 @@
* Admin Ajax functions to be tested.
*/
require_once ABSPATH . 'wp-admin/includes/ajax-actions.php';
-require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-base.php';
-require_once ABSPATH . 'wp-admin/includes/class-wp-filesystem-direct.php';
/**
* Class for testing ajax crop image functionality.
diff --git a/tests/phpunit/tests/ajax/wpCustomizeManager.php b/tests/phpunit/tests/ajax/wpCustomizeManager.php
index 15ee1f0d5c639..f04ec64b560ef 100644
--- a/tests/phpunit/tests/ajax/wpCustomizeManager.php
+++ b/tests/phpunit/tests/ajax/wpCustomizeManager.php
@@ -48,14 +48,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
self::$admin_user_id = $factory->user->create( array( 'role' => 'administrator' ) );
}
- /**
- * Set up the test fixture.
- */
- public function set_up() {
- parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
- }
-
/**
* Tear down.
*/
diff --git a/tests/phpunit/tests/ajax/wpCustomizeNavMenus.php b/tests/phpunit/tests/ajax/wpCustomizeNavMenus.php
index 08353f6e65524..b6b637bd59dc1 100644
--- a/tests/phpunit/tests/ajax/wpCustomizeNavMenus.php
+++ b/tests/phpunit/tests/ajax/wpCustomizeNavMenus.php
@@ -79,7 +79,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
*/
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
wp_set_current_user( self::$admin_user_id );
global $wp_customize;
$this->wp_customize = new WP_Customize_Manager();
diff --git a/tests/phpunit/tests/auth.php b/tests/phpunit/tests/auth.php
index a290d11e118e6..6061f47696063 100644
--- a/tests/phpunit/tests/auth.php
+++ b/tests/phpunit/tests/auth.php
@@ -50,9 +50,7 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
)
);
- self::$user_id = self::$_user->ID;
-
- require_once ABSPATH . WPINC . '/class-phpass.php';
+ self::$user_id = self::$_user->ID;
self::$wp_hasher = new PasswordHash( 8, true );
}
diff --git a/tests/phpunit/tests/autoloader-classmap.php b/tests/phpunit/tests/autoloader-classmap.php
new file mode 100644
index 0000000000000..12b52b96de3e7
--- /dev/null
+++ b/tests/phpunit/tests/autoloader-classmap.php
@@ -0,0 +1,177 @@
+assertSame( strtolower( $class_name ), $class_name, "Class name '$class_name' is not lowercase." );
+ }
+
+ /**
+ * Data provider for test_autoloader_classmap_is_lowercase.
+ *
+ * @return array Data provider.
+ */
+ public function data_autoloader_classmap_is_lowercase() {
+ $class_names = array_keys( WP_Autoload::CLASSES_PATHS );
+ return $this->text_array_to_dataprovider( $class_names );
+ }
+
+ /**
+ * Tests that all files in the classmap exist.
+ *
+ * @covers WP_Autoload::CLASSES_PATHS
+ *
+ * @dataProvider data_autoloader_classmap_files_exist
+ *
+ * @param string $file_path File path relative to WP root directory.
+ */
+ public function test_autoloader_classmap_files_exist( $file_path ) {
+ $this->assertFileExists( ABSPATH . $file_path );
+ }
+
+ /**
+ * Data provider for test_autoloader_classmap_files_exist.
+ *
+ * @return array Data provider.
+ */
+ public function data_autoloader_classmap_files_exist() {
+ $file_paths = array_unique( array_values( WP_Autoload::CLASSES_PATHS ) );
+ return $this->text_array_to_dataprovider( $file_paths );
+ }
+
+ /**
+ * Tests that all classes in the classmap are in the correct file.
+ *
+ * @covers WP_Autoload::CLASSES_PATHS
+ *
+ * @dataProvider data_autoloader_classmap_is_in_correct_file
+ *
+ * @param string $class_name Class name.
+ * @param string $file_path File path relative to WP root directory.
+ */
+ public function test_autoloader_classmap_is_in_correct_file( $class_name, $file_path ) {
+ $this->assertTrue(
+ str_contains(
+ strtolower( file_get_contents( ABSPATH . $file_path ) ),
+ "class $class_name"
+ )
+ );
+ }
+
+ /**
+ * Data provider for test_autoloader_classmap_is_in_correct_file.
+ *
+ * @return array Data provider.
+ */
+ public function data_autoloader_classmap_is_in_correct_file() {
+ $data = array();
+ foreach ( WP_Autoload::CLASSES_PATHS as $class_name => $file_path ) {
+ $data[ $class_name ] = array(
+ 'class_name' => $class_name,
+ 'file_path' => $file_path,
+ );
+ }
+
+ return $data;
+ }
+
+ /**
+ * Tests that all `class-*.php` files in the WP core directory are in the classmap.
+ *
+ * @covers WP_Autoload::CLASSES_PATHS
+ *
+ * @dataProvider data_autoloader_class_files_exist_in_classmap
+ *
+ * @param string $class_name Class name.
+ * @param string $file_path File path relative to WP root directory.
+ */
+ public function test_autoloader_class_files_exist_in_classmap( $class_name, $file_path ) {
+ $this->assertArrayHasKey(
+ $class_name,
+ WP_Autoload::CLASSES_PATHS,
+ "Class '$class_name' is missing from the classmap."
+ );
+ }
+
+ /**
+ * Data provider for test_autoloader_class_files_exist_in_classmap.
+ *
+ * @return array Data provider.
+ */
+ public function data_autoloader_class_files_exist_in_classmap() {
+ $files = $this->get_all_wp_class_files();
+ $data = array();
+ foreach ( $files as $class_name => $file_path ) {
+ $data[ $class_name ] = array(
+ 'class_name' => $class_name,
+ 'file_path' => $file_path,
+ );
+ }
+ return $data;
+ }
+
+ /**
+ * Gets all `class-*.php` files in the WP core directory.
+ *
+ * @return array
+ */
+ public function get_all_wp_class_files() {
+ static $files = array();
+ if ( ! empty( $files ) ) {
+ return $files;
+ }
+
+ $directory = new RecursiveDirectoryIterator( ABSPATH . WPINC );
+ $iterator = new RecursiveIteratorIterator( $directory );
+ $regex = new RegexIterator( $iterator, '/^.+\/class\-[a-z-]+\.php$/i', RecursiveRegexIterator::GET_MATCH );
+ $ltrim_length = strlen( trailingslashit( ABSPATH ) );
+
+ $package_paths_to_ignore = array(
+ 'wp-includes/class-requests.php', // 3rd-party library.
+ 'wp-includes/Requests/', // 3rd-party library.
+ 'wp-includes/sodium_compat/', // 3rd-party library.
+ 'wp-includes/class-avif-info.php', // 3rd-party library.
+ 'wp-includes/class-simplepie.php', // 3rd-party library.
+ 'wp-includes/class-snoopy.php', // Deprecated.
+ // Intentionally excluded from the classmap — see the WP_Autoload docblock for details.
+ 'wp-includes/class-wp-autoload.php', // The autoloader itself cannot bootstrap itself.
+ 'wp-includes/class-wpdb.php', // Defines global constants at file scope.
+ 'wp-includes/class-wp-http.php', // Top-level code registers the Requests autoloader; must run at bootstrap time.
+ );
+
+ foreach ( $regex as $file ) {
+ $class_file = $file[0];
+ $relative_file = substr( $class_file, $ltrim_length );
+ foreach ( $package_paths_to_ignore as $package_path ) {
+ if ( str_contains( $relative_file, $package_path ) !== false ) {
+ continue 2;
+ }
+ }
+
+ $file_contents = file_get_contents( $class_file );
+ // Extract the first class/interface/trait/enum name from the file.
+ preg_match( '/^(?:(?:final|abstract|readonly)\s+)*(?:class|interface|trait|enum)\s+([a-zA-Z0-9_]+)/m', $file_contents, $matches );
+ if ( empty( $matches ) ) {
+ continue;
+ }
+ $class_name = strtolower( $matches[1] );
+ $files[ $class_name ] = $relative_file;
+ }
+
+ return $files;
+ }
+}
diff --git a/tests/phpunit/tests/category/walkerCategory.php b/tests/phpunit/tests/category/walkerCategory.php
index e13ce9bb1047a..245d86cb8afb7 100644
--- a/tests/phpunit/tests/category/walkerCategory.php
+++ b/tests/phpunit/tests/category/walkerCategory.php
@@ -19,8 +19,6 @@ class Tests_Category_Walker_Category extends WP_UnitTestCase {
public function set_up() {
parent::set_up();
- /** Walker_Category class */
- require_once ABSPATH . 'wp-includes/class-walker-category.php';
$this->walker = new Walker_Category();
}
diff --git a/tests/phpunit/tests/comment/wpHandleCommentSubmission.php b/tests/phpunit/tests/comment/wpHandleCommentSubmission.php
index 3f2ba84194a0d..400c77e3c85cf 100644
--- a/tests/phpunit/tests/comment/wpHandleCommentSubmission.php
+++ b/tests/phpunit/tests/comment/wpHandleCommentSubmission.php
@@ -46,7 +46,6 @@ public static function wpTearDownAfterClass() {
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-phpass.php';
}
public function test_submitting_comment_to_invalid_post_returns_error() {
diff --git a/tests/phpunit/tests/compat/jsonEncodeDecode.php b/tests/phpunit/tests/compat/jsonEncodeDecode.php
index be51c6022b193..a3d54abf8de37 100644
--- a/tests/phpunit/tests/compat/jsonEncodeDecode.php
+++ b/tests/phpunit/tests/compat/jsonEncodeDecode.php
@@ -18,7 +18,6 @@ public function test_json_encode_decode() {
$this->setExpectedDeprecated( 'Services_JSON::strlen8' );
$this->setExpectedDeprecated( 'Services_JSON::substr8' );
- require_once ABSPATH . WPINC . '/class-json.php';
$json = new Services_JSON();
// Super basic test to verify Services_JSON is intact and working.
diff --git a/tests/phpunit/tests/customize/control.php b/tests/phpunit/tests/customize/control.php
index ea3311e15c192..f440ec5ed0470 100644
--- a/tests/phpunit/tests/customize/control.php
+++ b/tests/phpunit/tests/customize/control.php
@@ -39,7 +39,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
public function set_up() {
parent::set_up();
wp_set_current_user( self::$user_id );
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$GLOBALS['wp_customize'] = new WP_Customize_Manager();
$this->wp_customize = $GLOBALS['wp_customize'];
}
diff --git a/tests/phpunit/tests/customize/custom-css-setting.php b/tests/phpunit/tests/customize/custom-css-setting.php
index 06f77075d0ba8..c353cf58611b4 100644
--- a/tests/phpunit/tests/customize/custom-css-setting.php
+++ b/tests/phpunit/tests/customize/custom-css-setting.php
@@ -54,7 +54,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
*/
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
wp_set_current_user( self::$user_id );
diff --git a/tests/phpunit/tests/customize/manager.php b/tests/phpunit/tests/customize/manager.php
index 21bdd85eebac3..2465a6fd265c4 100644
--- a/tests/phpunit/tests/customize/manager.php
+++ b/tests/phpunit/tests/customize/manager.php
@@ -63,7 +63,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
*/
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$this->manager = $this->instantiate();
}
@@ -3685,8 +3684,6 @@ public function test_sanitize_external_header_video_trim() {
}
}
-require_once ABSPATH . WPINC . '/class-wp-customize-setting.php';
-
/**
* Class Test_Dynamic_Customize_Setting
*
diff --git a/tests/phpunit/tests/customize/nav-menu-item-setting.php b/tests/phpunit/tests/customize/nav-menu-item-setting.php
index 85cf0f10f7b5b..31e72c2d66b22 100644
--- a/tests/phpunit/tests/customize/nav-menu-item-setting.php
+++ b/tests/phpunit/tests/customize/nav-menu-item-setting.php
@@ -36,7 +36,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
*/
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
wp_set_current_user( self::$administrator_id );
global $wp_customize;
diff --git a/tests/phpunit/tests/customize/nav-menu-setting.php b/tests/phpunit/tests/customize/nav-menu-setting.php
index 1348c86395a92..dea0c0ca345e7 100644
--- a/tests/phpunit/tests/customize/nav-menu-setting.php
+++ b/tests/phpunit/tests/customize/nav-menu-setting.php
@@ -37,7 +37,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
*/
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
wp_set_current_user( self::$administrator_id );
global $wp_customize;
diff --git a/tests/phpunit/tests/customize/nav-menus.php b/tests/phpunit/tests/customize/nav-menus.php
index 65390705bad26..1925d29b37b53 100644
--- a/tests/phpunit/tests/customize/nav-menus.php
+++ b/tests/phpunit/tests/customize/nav-menus.php
@@ -37,7 +37,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
*/
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
wp_set_current_user( self::$administrator_id );
global $wp_customize;
$this->wp_customize = new WP_Customize_Manager();
diff --git a/tests/phpunit/tests/customize/panel.php b/tests/phpunit/tests/customize/panel.php
index bd191e65d7cd3..c9490758e620b 100644
--- a/tests/phpunit/tests/customize/panel.php
+++ b/tests/phpunit/tests/customize/panel.php
@@ -30,7 +30,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$GLOBALS['wp_customize'] = new WP_Customize_Manager();
$this->manager = $GLOBALS['wp_customize'];
}
@@ -229,7 +228,6 @@ public function test_print_templates_custom() {
}
}
-require_once ABSPATH . WPINC . '/class-wp-customize-panel.php';
class Custom_Panel_Test extends WP_Customize_Panel {
public $type = 'titleless';
diff --git a/tests/phpunit/tests/customize/partial.php b/tests/phpunit/tests/customize/partial.php
index 9fc4a478a49b1..19484afd800ec 100644
--- a/tests/phpunit/tests/customize/partial.php
+++ b/tests/phpunit/tests/customize/partial.php
@@ -27,7 +27,6 @@ class Test_WP_Customize_Partial extends WP_UnitTestCase {
*/
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$GLOBALS['wp_customize'] = new WP_Customize_Manager();
$this->wp_customize = $GLOBALS['wp_customize'];
if ( isset( $this->wp_customize->selective_refresh ) ) {
diff --git a/tests/phpunit/tests/customize/section.php b/tests/phpunit/tests/customize/section.php
index ea2d55b658cae..25dfc00af681a 100644
--- a/tests/phpunit/tests/customize/section.php
+++ b/tests/phpunit/tests/customize/section.php
@@ -21,7 +21,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$GLOBALS['wp_customize'] = new WP_Customize_Manager();
$this->manager = $GLOBALS['wp_customize'];
}
@@ -222,7 +221,6 @@ public function test_print_templates_custom() {
}
}
-require_once ABSPATH . WPINC . '/class-wp-customize-section.php';
class Custom_Section_Test extends WP_Customize_Section {
public $type = 'titleless';
diff --git a/tests/phpunit/tests/customize/selective-refresh-ajax.php b/tests/phpunit/tests/customize/selective-refresh-ajax.php
index 8d9305962b7f7..26cbb91969623 100644
--- a/tests/phpunit/tests/customize/selective-refresh-ajax.php
+++ b/tests/phpunit/tests/customize/selective-refresh-ajax.php
@@ -54,7 +54,6 @@ public function set_up() {
add_filter( 'wp_doing_ajax', '__return_true' );
add_filter( 'wp_die_ajax_handler', array( $this, 'get_wp_die_handler' ), 1, 1 );
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$GLOBALS['wp_customize'] = new WP_Customize_Manager();
$this->wp_customize = $GLOBALS['wp_customize'];
if ( isset( $this->wp_customize->selective_refresh ) ) {
diff --git a/tests/phpunit/tests/customize/selective-refresh.php b/tests/phpunit/tests/customize/selective-refresh.php
index af2239fe60a1b..64541cbf92204 100644
--- a/tests/phpunit/tests/customize/selective-refresh.php
+++ b/tests/phpunit/tests/customize/selective-refresh.php
@@ -27,7 +27,6 @@ class Test_WP_Customize_Selective_Refresh extends WP_UnitTestCase {
*/
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$GLOBALS['wp_customize'] = new WP_Customize_Manager();
$this->wp_customize = $GLOBALS['wp_customize'];
if ( isset( $this->wp_customize->selective_refresh ) ) {
@@ -259,8 +258,6 @@ public function tear_down() {
}
}
-require_once ABSPATH . WPINC . '/customize/class-wp-customize-partial.php';
-
/**
* Class Tested_Custom_Partial
*/
diff --git a/tests/phpunit/tests/customize/setting.php b/tests/phpunit/tests/customize/setting.php
index 8150a2f03dd82..d426c56638800 100644
--- a/tests/phpunit/tests/customize/setting.php
+++ b/tests/phpunit/tests/customize/setting.php
@@ -35,7 +35,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$GLOBALS['wp_customize'] = new WP_Customize_Manager();
$this->manager = $GLOBALS['wp_customize'];
$this->undefined = new stdClass();
diff --git a/tests/phpunit/tests/customize/widgets.php b/tests/phpunit/tests/customize/widgets.php
index 5b64f85ce3392..4540850e0ce48 100644
--- a/tests/phpunit/tests/customize/widgets.php
+++ b/tests/phpunit/tests/customize/widgets.php
@@ -38,7 +38,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
add_theme_support( 'customize-selective-refresh-widgets' );
add_action( 'widgets_init', array( $this, 'remove_widgets_block_editor' ) );
diff --git a/tests/phpunit/tests/editor/wpEditors.php b/tests/phpunit/tests/editor/wpEditors.php
index c4e9e50515fda..e4696812ffa66 100644
--- a/tests/phpunit/tests/editor/wpEditors.php
+++ b/tests/phpunit/tests/editor/wpEditors.php
@@ -1,9 +1,5 @@
register_controls();
$wp_customize->start_previewing_theme();
@@ -254,7 +251,6 @@ public function test_customize_preview_wp_site_icon_dirty() {
global $wp_customize;
wp_set_current_user( self::$administrator_id );
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$wp_customize = new WP_Customize_Manager();
$wp_customize->register_controls();
$wp_customize->start_previewing_theme();
diff --git a/tests/phpunit/tests/image/editor.php b/tests/phpunit/tests/image/editor.php
index 58c9880fe396c..9269580c67960 100644
--- a/tests/phpunit/tests/image/editor.php
+++ b/tests/phpunit/tests/image/editor.php
@@ -15,8 +15,6 @@ class Tests_Image_Editor extends WP_Image_UnitTestCase {
* Setup test fixture
*/
public function set_up() {
- require_once ABSPATH . WPINC . '/class-wp-image-editor.php';
-
require_once DIR_TESTDATA . '/../includes/mock-image-editor.php';
// This needs to come after the mock image editor class is loaded.
diff --git a/tests/phpunit/tests/image/editorGd.php b/tests/phpunit/tests/image/editorGd.php
index ac0e8268390c2..81e4cc5b8a650 100644
--- a/tests/phpunit/tests/image/editorGd.php
+++ b/tests/phpunit/tests/image/editorGd.php
@@ -13,14 +13,6 @@ class Tests_Image_Editor_GD extends WP_Image_UnitTestCase {
public $editor_engine = 'WP_Image_Editor_GD';
- public function set_up() {
- require_once ABSPATH . WPINC . '/class-wp-image-editor.php';
- require_once ABSPATH . WPINC . '/class-wp-image-editor-gd.php';
-
- // This needs to come after the mock image editor class is loaded.
- parent::set_up();
- }
-
public function tear_down() {
$folder = DIR_TESTDATA . '/images/waffles-*.jpg';
diff --git a/tests/phpunit/tests/image/editorImagick.php b/tests/phpunit/tests/image/editorImagick.php
index e120c32502ad5..a47a12e04a487 100644
--- a/tests/phpunit/tests/image/editorImagick.php
+++ b/tests/phpunit/tests/image/editorImagick.php
@@ -14,8 +14,6 @@ class Tests_Image_Editor_Imagick extends WP_Image_UnitTestCase {
public $editor_engine = 'WP_Image_Editor_Imagick';
public function set_up() {
- require_once ABSPATH . WPINC . '/class-wp-image-editor.php';
- require_once ABSPATH . WPINC . '/class-wp-image-editor-imagick.php';
require_once DIR_TESTROOT . '/includes/class-wp-test-stream.php';
// This needs to come after the mock image editor class is loaded.
diff --git a/tests/phpunit/tests/image/functions.php b/tests/phpunit/tests/image/functions.php
index 94cc0111f0d4c..0a8d6610d2512 100644
--- a/tests/phpunit/tests/image/functions.php
+++ b/tests/phpunit/tests/image/functions.php
@@ -13,10 +13,6 @@ class Tests_Image_Functions extends WP_UnitTestCase {
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-image-editor.php';
- require_once ABSPATH . WPINC . '/class-wp-image-editor-gd.php';
- require_once ABSPATH . WPINC . '/class-wp-image-editor-imagick.php';
-
require_once DIR_TESTDATA . '/../includes/mock-image-editor.php';
// Ensure no legacy / failed tests detritus.
diff --git a/tests/phpunit/tests/image/header.php b/tests/phpunit/tests/image/header.php
index fce617fd7df4f..d6adff93f2c1c 100644
--- a/tests/phpunit/tests/image/header.php
+++ b/tests/phpunit/tests/image/header.php
@@ -1,5 +1,4 @@
walker = new Walker_Nav_Menu_Edit();
$this->_wp_nav_menu_max_depth = $_wp_nav_menu_max_depth;
diff --git a/tests/phpunit/tests/menu/walker-nav-menu.php b/tests/phpunit/tests/menu/walker-nav-menu.php
index 58a54088b390c..470c0fd473fa8 100644
--- a/tests/phpunit/tests/menu/walker-nav-menu.php
+++ b/tests/phpunit/tests/menu/walker-nav-menu.php
@@ -33,7 +33,6 @@ public function set_up() {
parent::set_up();
/** Walker_Nav_Menu class */
- require_once ABSPATH . 'wp-includes/class-walker-nav-menu.php';
$post_id = self::factory()->post->create(
array(
diff --git a/tests/phpunit/tests/oembed/wpOembed.php b/tests/phpunit/tests/oembed/wpOembed.php
index bc10c2a10a7eb..1b367d4baec85 100644
--- a/tests/phpunit/tests/oembed/wpOembed.php
+++ b/tests/phpunit/tests/oembed/wpOembed.php
@@ -32,7 +32,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-oembed.php';
$this->oembed = _wp_oembed_get_object();
$this->pre_oembed_result_filtered = false;
diff --git a/tests/phpunit/tests/post/nav-menu.php b/tests/phpunit/tests/post/nav-menu.php
index 5ee9fb5f57097..8fba30c873aa1 100644
--- a/tests/phpunit/tests/post/nav-menu.php
+++ b/tests/phpunit/tests/post/nav-menu.php
@@ -930,7 +930,6 @@ public function test_wp_delete_customize_changeset_dependent_auto_drafts() {
)
)
);
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$wp_customize = new WP_Customize_Manager();
do_action( 'customize_register', $wp_customize );
$wp_customize->save_changeset_post(
diff --git a/tests/phpunit/tests/post/walkerPage.php b/tests/phpunit/tests/post/walkerPage.php
index d8a2312a54eff..521e98c648db2 100644
--- a/tests/phpunit/tests/post/walkerPage.php
+++ b/tests/phpunit/tests/post/walkerPage.php
@@ -16,8 +16,6 @@ class Tests_Post_Walker_Page extends WP_UnitTestCase {
public function set_up() {
parent::set_up();
- /** Walker_Page class */
- require_once ABSPATH . 'wp-includes/class-walker-page.php';
$this->walker = new Walker_Page();
}
diff --git a/tests/phpunit/tests/rest-api/rest-attachments-controller.php b/tests/phpunit/tests/rest-api/rest-attachments-controller.php
index 79e9d23cf9dd3..0c993cc01b2d5 100644
--- a/tests/phpunit/tests/rest-api/rest-attachments-controller.php
+++ b/tests/phpunit/tests/rest-api/rest-attachments-controller.php
@@ -2882,7 +2882,6 @@ public function test_edit_image_returns_error_if_mismatched_src() {
* @since 5.5.0
*/
protected function setup_mock_editor() {
- require_once ABSPATH . WPINC . '/class-wp-image-editor.php';
require_once DIR_TESTDATA . '/../includes/mock-image-editor.php';
add_filter(
diff --git a/tests/phpunit/tests/theme.php b/tests/phpunit/tests/theme.php
index df840d9a27a51..6d37f2a963689 100644
--- a/tests/phpunit/tests/theme.php
+++ b/tests/phpunit/tests/theme.php
@@ -560,7 +560,6 @@ public function test_wp_keep_alive_customize_changeset_dependent_auto_drafts() {
),
);
wp_set_current_user( self::factory()->user->create( array( 'role' => 'administrator' ) ) );
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$wp_customize = new WP_Customize_Manager();
do_action( 'customize_register', $wp_customize );
diff --git a/tests/phpunit/tests/theme/customHeader.php b/tests/phpunit/tests/theme/customHeader.php
index 95951d87e37fd..49a0e8f611400 100644
--- a/tests/phpunit/tests/theme/customHeader.php
+++ b/tests/phpunit/tests/theme/customHeader.php
@@ -24,7 +24,6 @@ public static function wpSetUpBeforeClass( WP_UnitTest_Factory $factory ) {
public function set_up() {
parent::set_up();
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$GLOBALS['wp_customize'] = new WP_Customize_Manager();
$this->customize_manager = $GLOBALS['wp_customize'];
diff --git a/tests/phpunit/tests/user/passwordHash.php b/tests/phpunit/tests/user/passwordHash.php
index c09fd91691efd..e98c902700d04 100644
--- a/tests/phpunit/tests/user/passwordHash.php
+++ b/tests/phpunit/tests/user/passwordHash.php
@@ -11,12 +11,6 @@
*/
class Tests_User_PasswordHash extends WP_UnitTestCase {
- public static function set_up_before_class() {
- parent::set_up_before_class();
-
- require_once ABSPATH . WPINC . '/class-phpass.php';
- }
-
/**
* Tests that PasswordHash::gensalt_blowfish() does not throw a deprecation notice on PHP 8.1.
*
diff --git a/tests/phpunit/tests/widgets.php b/tests/phpunit/tests/widgets.php
index 8eb5914c9400d..4700aff9f0f5b 100644
--- a/tests/phpunit/tests/widgets.php
+++ b/tests/phpunit/tests/widgets.php
@@ -634,7 +634,6 @@ public function test_wp_widget_is_preview() {
$this->assertFalse( $widget->is_preview() );
wp_set_current_user( self::factory()->user->create( array( 'role' => 'administrator' ) ) );
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$wp_customize = new WP_Customize_Manager();
$wp_customize->start_previewing_theme();
diff --git a/tests/phpunit/tests/widgets/wpWidgetMedia.php b/tests/phpunit/tests/widgets/wpWidgetMedia.php
index 0334672c19384..a9b191cf61938 100644
--- a/tests/phpunit/tests/widgets/wpWidgetMedia.php
+++ b/tests/phpunit/tests/widgets/wpWidgetMedia.php
@@ -122,7 +122,6 @@ public function test_constructor_in_customize_preview() {
)
)
);
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$wp_customize = new WP_Customize_Manager(
array(
'changeset_uuid' => wp_generate_uuid4(),
diff --git a/tests/phpunit/tests/widgets/wpWidgetText.php b/tests/phpunit/tests/widgets/wpWidgetText.php
index 18232610727c1..67038c03a67e3 100644
--- a/tests/phpunit/tests/widgets/wpWidgetText.php
+++ b/tests/phpunit/tests/widgets/wpWidgetText.php
@@ -86,7 +86,6 @@ public function test__register_in_customize_preview() {
)
)
);
- require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
$wp_customize = new WP_Customize_Manager(
array(
'changeset_uuid' => wp_generate_uuid4(),
diff --git a/tests/phpunit/tests/xmlrpc/basic.php b/tests/phpunit/tests/xmlrpc/basic.php
index a56a721a07fc6..036e5722f3d7d 100644
--- a/tests/phpunit/tests/xmlrpc/basic.php
+++ b/tests/phpunit/tests/xmlrpc/basic.php
@@ -1,8 +1,6 @@