WordPress изнутри — принцип работы движка
1. Обращение к wp-config.php
для загрузки конфигурации
Процесс загрузки начинается с запуска wp-config.php
(конфигурационного файла с глобальными переменными и подключением к БД).
2. Загрузка дефолтных констант
Применяются предустановленные значения дефолтных констант: директория установки, максимальный размер файлов и т.д.
3. Загружается advanced-cache.php
Файл используется плагинами кэширования.
4. Подгружается wp-content/db.php
(если он существует)
Файл необходимый для оптимизации работы BD. Он может повысить производительность сайта за счет уменьшения числа запросов к базе данных.
5. Подключение к серверу баз данных MySQL
CMS произведет выбор БД на сервере MySQL, либо вы увидите ошибку: «Error establishing database connection».
6. Запуск object-cache.php
, либо wp-includes/cache.php
WordPress будет искать файл object-cache.php
и при отсутствии такового, запустит по умолчанию wp-includes/cache.php
.
7. Загрузка файла wp-content/sunrise.php
При наличии сети сайтов, запустится режим Multisite
(после обнаружения вордпрессом sunrise.php
в папке wp-contetnt
).
8. Загрузка локализации
После обращения к библиотеке /l10n.php
из wp-includes
, вордпресс выполнит локализацию веб-сайта.
9. Запуск мультисайтовых плагинов
В случае мультисайтовой сети, WP запустит Multisite-плагины
.
10. Событие «muplugins_loaded
»
Срабатывает только для активных сетевых мультисайт-плагинов.
11. Запуск активированных плагинов
Запускаются все активные плагины, указанные в поле active_plugins
таблицы wp_options
.
12. Загрузка pluggable.php
Активированные вордпресс плагины могут переопределять функции pluggable.php
, но если это не так, то платформа обратится к файлу pluggable.php
.
13. Срабатывает событие plugins_loaded
Разработчики могут вставлять «plugins_loaded
» в код различных хуков и запускать собственные функции после загрузки всех активированных плагинов.
14. Применение правил Rewrite
для ЧПУ
Выполняются Rewrite Rules
– правила переопределения ссылок в SEO-дружественные и понятные человеку URL (ЧПУ).
15. Инициализируются объекты $wp_query
, $wp_rewrite
, $wp
На этом этапе WP задействует:
$wp_query
: Глобальная переменная класса WP_Query
сообщает, что контент запрошен в типичном для WP-движка формате
$wp_rewrite
: Глобальная переменная класса WP_Rewrite
. Содержит функции и правила Rewrite Rules
, подсказывающие вордпрессу, какой URL соответствует запрашиваемому контенту
$wp
: Глобальная переменная класса WP. Ее функции автоматически разбирают пользовательские запросы и загружают главную очередь (main query
)
16. Запускается функция «setup_theme
»
Загружая тему оформления, CMS выполняет предварительные действия.
17. Запуск functions.php
дочерней темы
Файл functions.php
работает как плагин и его назначение – придавать WP-теме отличительные особенности. Файл запустится, только если активна дочерняя тема, в противном случае загрузится functions.php
активной темы.
18. Запуск functions.php
родительской темы
Если используется дочерняя тема, на этом шаге WP запустит файл functions
родительской темы.
19. Выполненяется «after_setup_theme
»
Выполнение функции последует сразу за загрузкой основного шаблона (темы) и ее файла functions.php
.
20. Загрузка объекта текущего пользователя User Object
Вордпресс обрабатывает запросы согласно роли и привилегий текущего пользователя.
21. Выполненяется функция «init
»
К этому моменту WordPress уже запустил критически важные для работы механизмы. Теперь стартует функция «init
». Она дает разработчикам возможность использовать собственный код, который выполняется сразу после того, как движком выполнены все предшествующие шаги.
22. Выполненяется функция «widget_init
»
Разработчикам widget_init
позволяет регистрировать виджеты и выполнять нужный для их функционирования код.
23. Выполнение wp()
Из файла wp-includes/functions.php
вызывается функция wp()
. Задаются переменные $wp
, $wp_query
, $wp_the_query
и сразу следует вызов $wp->main
.
24. Парсинг запроса
Сейчас у вордпресса есть вся информация, необходимая для парсинга запроса. Первым делом проверяются соответствуют ли rewrite-правила
запросам пользователей. Далее следует фильтрация переменных запроса, запрос экшен-хуков и запрос на загрузку шапки (хедера) веб-ресурса.
25. Выполнение запроса
Когда вордпресс не находит соответствующий пользовательскому запросу контент, условный тег is_404
сгенерит страницу ошибки 404
.
Если контент найден, то продолжится запуск других запросов:
WP_Query->get_posts()
Функции DO_ACTION_REF_ARRAY ‘pre_get_posts’
для объекта WP_Query
apply_filters
(фильтр для очистки запросов и пр. завершающих проверок)
К извлекаемым из БД постам применяются фильтры posts_results
и the_posts
Теперь, когда все запросы выполнены, вордпресс выведет загруженные записи (посты).
26. Запуск функции template_redirect
Этот хук запустится до того, как будет выбрано, какой шаблон загружать
27. Загрузка Feed-шаблона
Для RSS feed
запроса, вордпресс загрузит соответствующий шаблон RSS-ленты.
28. Загрузка основной темы (шаблона)
WP приступит к поиску файла темы. Обычно, процесс загрузки шаблона начинается с файла содержащего основной цикл вордпресса.
29. Запуск функции «shutdown
»
Закончив исполнять PHP
-код WordPress
запустит «shutdown
». Работа WP-движка выполнена.
В ответ на запрос пользователя, веб-серверу хостинга будет передан сгенерированный вордпрессом HTML
код со стилями CSS
/ скриптами JS
, далее последует рендеринг страницы браузером.
Работа WordPress
заняла лишь миллисекунды!
Источник: wpbeginner.com