Схема загрузки ядра WordPress и выполнения хуков — это ключевой процесс, который определяет, как WordPress инициализируется и обрабатывает запросы.
Я опишу этот процесс пошагово, чтобы дать вам полное представление о том, как ядро загружается и в какие моменты выполняются хуки (actions и filters).

Точка входа: index.php
Всё начинается с файла index.php в корневой папке WordPress. Этот файл является точкой входа для всех запросов:
define('WP_USE_THEMES', true);
require( dirname( __FILE__ ) . '/wp-blog-header.php' );
WP_USE_THEMES— указывает, что должны загружаться темы.wp-blog-header.php— подключает основной файл загрузки ядра.
Загрузка ядра: wp-blog-header.php
Файл wp-blog-header.php подключает основной файл конфигурации и запускает процесс обработки запроса:
require_once( dirname( __FILE__ ) . '/wp-load.php' );
require_once( dirname( __FILE__ ) . '/wp-includes/template-loader.php' );
wp-load.php— загружает конфигурацию и ядро WordPress.template-loader.php— определяет, какой шаблон использовать для вывода страницы.
Инициализация конфигурации: wp-load.php
Файл wp-load.php отвечает за:
- Подключение
wp-config.php(основной файл конфигурации, где задаются константы, такие какDB_NAME,DB_USER, и т.д.). - Загрузку
wp-settings.php, который инициализирует ядро WordPress.
Основная инициализация: wp-settings.php
Этот файл — сердце загрузки WordPress. Вот что происходит:
Подключение базовых файлов:
- Константы и глобальные переменные.
- Функции ядра (
wp-includes/functions.phpи другие). - Классы (
WP_Query,WP_Rewrite, и т.д.).
Регистрация хуков:
- Определяются стандартные действия (actions) и фильтры (filters).
Загрузка плагинов:
- Подключаются активные плагины через
wp_get_active_and_valid_plugins().
Инициализация темы:
- Загружается файл
functions.phpактивной темы.
Хук after_setup_theme:
- Выполняется после инициализации темы.
Хук init:
- Один из ключевых хуков, где регистрируются типы записей, таксономии и другие настройки.
Обработка запроса: WP класс и wp-blog-header.php
После wp-settings.php управление передаётся обратно в wp-blog-header.php, где:
- Создаётся объект класса
WP(глобальная переменная$wp). - Вызывается метод
main():
- Хук
wp_loaded— выполняется после полной загрузки ядра. - Парсинг URL и определение запроса (
WP::parse_request()). - Выполнение основного запроса (
WP_Query).
Выполнение хуков в процессе запроса
WordPress использует систему хуков для расширения функциональности. Вот основные хуки в порядке их выполнения:
muplugins_loaded— после загрузки MU-плагинов (Must-Use).plugins_loaded— после загрузки всех плагинов.after_setup_theme— после инициализации темы.init— после полной инициализации ядра.wp_loaded— после завершения загрузки WordPress.template_redirect— перед выбором шаблона.wp— перед выводом контента, когда$wp_queryполностью настроен.shutdown— в самом конце выполнения скрипта.
Выбор и загрузка шаблона: template-loader.php
- На основе запроса (
WP_Query) WordPress определяет, какой шаблон использовать (например,single.php,page.php,index.php). - Выполняется хук
template_redirect, позволяющий изменить логику выбора шаблона. - Загружается соответствующий файл темы.
Пример последовательности выполнения хуков
Если вы добавите свои функции к хукам, они выполнятся в таком порядке:
add_action('plugins_loaded', function() { echo "Плагины загружены"; });
add_action('init', function() { echo "Ядро инициализировано"; });
add_action('wp_loaded', function() { echo "WordPress полностью загружен"; });
add_action('template_redirect', function() { echo "Перед загрузкой шаблона"; });
Итоговая схема загрузки WordPress
index.php→wp-blog-header.phpwp-load.php→wp-config.php→wp-settings.php- Инициализация ядра, плагинов, темы.
- Обработка запроса (
WP→WP_Query). - Выбор и вывод шаблона (
template-loader.php).
Каждый этап сопровождается соответствующими хуками, которые позволяют разработчикам вмешиваться в процесс. Если вам нужно углубиться в конкретный хук или этап, дайте знать — я разберу его подробнее!