Схема загрузки ядра WordPress и выполнение хуков

Схема загрузки ядра 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 отвечает за:

  1. Подключение wp-config.php (основной файл конфигурации, где задаются константы, такие как DB_NAME, DB_USER, и т.д.).
  2. Загрузку 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, где:

            1. Создаётся объект класса WP (глобальная переменная $wp).
            2. Вызывается метод 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

            1. index.phpwp-blog-header.php
            2. wp-load.phpwp-config.phpwp-settings.php
            3. Инициализация ядра, плагинов, темы.
            4. Обработка запроса (WPWP_Query).
            5. Выбор и вывод шаблона (template-loader.php).

            Каждый этап сопровождается соответствующими хуками, которые позволяют разработчикам вмешиваться в процесс. Если вам нужно углубиться в конкретный хук или этап, дайте знать — я разберу его подробнее!

            Фото аватара
            Anton

            Веб разработчик, специализация на лучших мировых практиках: WordPress, WooCommerce, NextJS, Strapi, JAMStack ...

            Основные типы проектов: CMS, eCommerce, SEO, LMS, ECM, BPM

            Подробнее...

            Статей: 118

            Ответить

            Ваш адрес email не будет опубликован. Обязательные поля помечены *


            1