Схема загрузки ядра 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.php
wp-load.php
→wp-config.php
→wp-settings.php
- Инициализация ядра, плагинов, темы.
- Обработка запроса (
WP
→WP_Query
). - Выбор и вывод шаблона (
template-loader.php
).
Каждый этап сопровождается соответствующими хуками, которые позволяют разработчикам вмешиваться в процесс. Если вам нужно углубиться в конкретный хук или этап, дайте знать — я разберу его подробнее!