diff -r 48c4eec2b7e6 -r 8c2e4d02f4ef wp/wp-settings.php --- a/wp/wp-settings.php Fri Sep 05 18:40:08 2025 +0200 +++ b/wp/wp-settings.php Fri Sep 05 18:52:52 2025 +0200 @@ -22,14 +22,15 @@ * include version.php from another installation and don't override * these values if already set. * - * @global string $wp_version The WordPress version string. - * @global int $wp_db_version WordPress database version. - * @global string $tinymce_version TinyMCE version. - * @global string $required_php_version The required PHP version string. - * @global string $required_mysql_version The required MySQL version string. - * @global string $wp_local_package Locale code of the package. + * @global string $wp_version The WordPress version string. + * @global int $wp_db_version WordPress database version. + * @global string $tinymce_version TinyMCE version. + * @global string $required_php_version The required PHP version string. + * @global string[] $required_php_extensions The names of required PHP extensions. + * @global string $required_mysql_version The required MySQL version string. + * @global string $wp_local_package Locale code of the package. */ -global $wp_version, $wp_db_version, $tinymce_version, $required_php_version, $required_mysql_version, $wp_local_package; +global $wp_version, $wp_db_version, $tinymce_version, $required_php_version, $required_php_extensions, $required_mysql_version, $wp_local_package; require ABSPATH . WPINC . '/version.php'; require ABSPATH . WPINC . '/compat.php'; require ABSPATH . WPINC . '/load.php'; @@ -39,6 +40,7 @@ // 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'; @@ -192,6 +194,7 @@ 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'; @@ -252,6 +255,7 @@ 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'; @@ -352,6 +356,7 @@ 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'; @@ -382,6 +387,7 @@ require ABSPATH . WPINC . '/block-supports/shadow.php'; require ABSPATH . WPINC . '/block-supports/background.php'; require ABSPATH . WPINC . '/block-supports/block-style-variations.php'; +require ABSPATH . WPINC . '/block-supports/aria-label.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'; @@ -400,6 +406,9 @@ 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'; add_action( 'after_setup_theme', array( wp_script_modules(), 'add_hooks' ) ); add_action( 'after_setup_theme', array( wp_interactivity(), 'add_hooks' ) ); @@ -514,10 +523,24 @@ wp_recovery_mode()->initialize(); } +// To make get_plugin_data() available in a way that's compatible with plugins also loading this file, see #62244. +require_once ABSPATH . 'wp-admin/includes/plugin.php'; + // Load active plugins. foreach ( wp_get_active_and_valid_plugins() as $plugin ) { wp_register_plugin_realpath( $plugin ); + $plugin_data = get_plugin_data( $plugin, false, false ); + + $textdomain = $plugin_data['TextDomain']; + if ( $textdomain ) { + if ( $plugin_data['DomainPath'] ) { + $GLOBALS['wp_textdomain_registry']->set_custom_path( $textdomain, dirname( $plugin ) . $plugin_data['DomainPath'] ); + } else { + $GLOBALS['wp_textdomain_registry']->set_custom_path( $textdomain, dirname( $plugin ) ); + } + } + $_wp_plugin_file = $plugin; include_once $plugin; $plugin = $_wp_plugin_file; // Avoid stomping of the $plugin variable in a plugin. @@ -531,7 +554,7 @@ */ do_action( 'plugin_loaded', $plugin ); } -unset( $plugin, $_wp_plugin_file ); +unset( $plugin, $_wp_plugin_file, $plugin_data, $textdomain ); // Load pluggable functions. require ABSPATH . WPINC . '/pluggable.php'; @@ -664,11 +687,15 @@ // Load the functions for the active theme, for both parent and child theme if applicable. foreach ( wp_get_active_and_valid_themes() as $theme ) { + $wp_theme = wp_get_theme( basename( $theme ) ); + + $wp_theme->load_textdomain(); + if ( file_exists( $theme . '/functions.php' ) ) { include $theme . '/functions.php'; } } -unset( $theme ); +unset( $theme, $wp_theme ); /** * Fires after the theme is loaded.