--- 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.