Последовательность загрузки WordPress: экскурсия

Действительно, WordPress может быть чем-то вроде джунглей. Он органически вырос из платформы для ведения блогов в платформу CMS. В настоящий момент я пробиваюсь через API, загружаю… И планирую описать это в серии статей.

ПЕРВЫЕ ФАЙЛЫ

Поскольку это программа PHP, первое, что нужно загрузить, - это index.php в корневой папке.

Этот файл сам по себе мало что делает. Он определяет константу и загружает файл wp-blog-header.php в ту же папку.

Если вы загружаете страницу администратора, вместо этого вы начинаете с wp-admin / index.php. В процессе загрузки администратора также используется нормальный процесс (с некоторыми дополнительными функциями).

WP-БЛОГ-ЗАГОЛОВОК.PHP

Wp-blog-header.php выполняет три функции. Он загружает wp-load.php, который настраивает всю среду WordPress. Затем он выполняет функцию wp () в wp-includes / functions.php, которая загружает запрос. Template-loader.php решает, какой шаблон следует загрузить.

WP-LOAD.PHP

Этот файл проверяет наличие wp-config.php, если он его обнаруживает, и продолжает процесс настройки среды. Если wp-config.php отсутствует, Wordpress предполагает, что это новая установка. Затем загружается экран установки.

В конце каждого файла wp-config.php требуется wp-settings.php. Здесь и начинается процесс настройки.

WP-НАСТРОЙКИ.PHP

Вверху этого файла загружены еще три файла:

  • Load.php (в wp-includes) - предоставляет первые функции, которые нужны WordPress. Большинство из них занимаются нормализацией сервера, проверкой, активен ли режим обслуживания, проверкой, активен ли режим отладки и т. Д.
  • Default-constants.php (также в wp-includes) - устанавливает множество констант. Если они не определены в wp-config.php
  • Version.php (опять же, wp-includes) - действительно простой файл, определяющий версии / требуемые версии.

FUNCTIONS.PHP, КЛАССЫ WP И API ПЛАГИНА

Wordpress запускает функции из load.php. Эти первые функции в основном используются для номинализации сервера.

Из комментария Загрузить ранние файлы WordPress загружаются первые функции, которые делают больше, чем просто настройку.

Compat.php добавляет некоторые дополнительные функции, отсутствующие в старых версиях PHP. WordPress действительно предназначен для поддержки действительно старых версий PHP.

Functions.php - это то место, где находятся самые основные функции для запуска вашего сайта. Они включают функции для сериализации данных (например, post_meta), функции даты, работы с запросами на получение, одноразовые номера и многое другое ...

Class-wp.php фактически создает запрос, обрабатывает переменные запроса и настраивает. Это объект, который создается в конце wp-settings.php.

Class-wp-error.php - это класс, который можно использовать в ваших собственных плагинах для отслеживания ошибок. Он был введен как замена try / catch и возвращает определенные объекты WP_Error.

Теперь plugin.php загружен. Это еще один важный файл. Он предоставляет функции, необходимые для хуков действий и фильтров. Это позволяет изменять поведение основных файлов и плагинов, не затрагивая исходный код.

Наконец, в этой серии требований WordPress загружает mo.php для работы с файлами перевода.

НАСТРОЙКА КЛАССА БАЗЫ ДАННЫХ И КЭШ

Затем вызываются require_wp_db () и wp_start_object_cache () (из load.php). Они обеспечивают подключение к базе данных и кеширование. Также они позволяют использовать дроп-ин. Это означает, что вы можете заменить здесь классы и функции по умолчанию.

ФИЛЬТРЫ ПО УМОЛЧАНИЮ.PHP

Это файл, который настраивает множество фильтров и действий. Это действительно интересно. Вы можете проверить этот список на предмет приоритетов, чтобы удалить их.

МНОГОСАЙТНЫЙ ЗАПУСК

Если вы установите мультисайт в wp-config, WordPress теперь загружает необходимые функции (ms-blogs.php) и запускает все необходимое для мультисайта (ms-settings.php, который по концепции аналогичен wp-settings). . Также обратите внимание, что ms-settings может загружать dropin-а, который может изменить работу мультисайта.

КОНЕЦ ОСНОВНОЙ ЗАГРУЗКИ

WordPress завершил загрузку основных функций. Он добавляет ловушку (shutdown_action_hook), которая запускается после завершения работы PHP (через register_shutdown_function).

Здесь определяется ловушка, потому что сразу после нее выполняется проверка константы SHORTINIT. Вы можете определить эту константу в своих плагинах или темах, если вам нужно загрузить только самые основы WordPress. Например, если вы хотите ускорить вызовы Ajax или создаете какой-то API поверх WordPress.

Обратите внимание, что многие ожидаемые функции WordPress пока недоступны, в том числе с использованием плагинов.

ЗАГРУЗКА БОЛЬШИНСТВА МИРА

Загружается API перевода, и WordPress выполняет последнюю проверку, чтобы увидеть, нужно ли устанавливать сайт.

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

ЗАГРУЗКА ДОЛЖНА ИСПОЛЬЗОВАТЬ ПЛАГИНЫ

Перед загрузкой необходимо использовать плагины, устанавливаются дополнительные константы по умолчанию, которым требуется больше загруженного API, чем те, которые установлены с помощью wp_initial_constants в начале wp-settings.

Должны использовать плагины - это плагины, которыми вы не сможете управлять через обычные экраны администрирования плагинов. Они полезны, если вы создаете приложение, в котором конечные пользователи не могут включать / отключать части приложения.

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

После загрузки обязательных подключаемых модулей вы получаете самый ранний хук, который вы можете вызвать: muplugins_loaded - обратите внимание, что на данный момент еще не загружены нормальные подключаемые модули.

ТАКСОНОМИИ ПО УМОЛЧАНИЮ И ВИДЫ ПОЧТЫ

WordPress теперь настраивает множество дополнительных констант и переменных (включая User Agent, если сайт использует SSL и др.).

Затем он переходит к настройке типов сообщений и таксономий по умолчанию (сообщение, страница, вложение, категория, тег,…)

ЗАГРУЗКА ОБЫЧНЫХ ПЛАГИНОВ

После установки каталога темы WordPress загружает обычные плагины, как определено в опции active_plugins. Он также загружает подключаемые, которые включают функции, которые вы можете легко перезаписать из своих тем или плагинов.

Когда все плагины загружены, вы получите еще один ранний перехватчик: plugins_loaded. На этом этапе все плагины загружены, а их функции и хуки доступны вам.

СОЗДАНИЕ ГЛОБАЛЬНЫХ ОБЪЕКТОВ

WordPress теперь создает объекты (wp, wp_query,…), которые становятся глобально доступными. Они содержат такие вещи, как текущий запрос.

ВЫБОР ТЕМЫ

WordPress теперь проверяет, какая тема активна, и загружает для нее файл functions.php. Также обратите внимание, что здесь есть два дополнительных крючка: один до выбора темы и один, который запускается после.

НАЧАЛЬНЫЙ КРЮК

Теперь объект WP выполняет действие init, которое заполняет текущего пользователя. После этого вы получите знаменитый хук инициализации. Множество плагинов и тем используют этот крючок. Загружается все ядро ​​функций WordPress и заполняется текущий пользователь.

WP_LOADED HOOK

Если ваш сайт является мультисайтом, WordPress проверит, является ли текущий сайт полностью активным.

Так что, если у вас есть несколько сайтов (или вы хотите запустить функцию после загрузки большинства плагинов), лучше всего использовать ловушку wp_loaded.

Вы могли подумать, что это может никогда не закончиться, но на этом wp-settings.php заканчивается.

WP()

На этом этапе доступны все основные функции и загружен WordPress. Однако в браузер еще ничего не написано.

Помните wp-blog-header.php? Для этого требуется wp-load.php (для которого требуется wp-config.php, который, в свою очередь, требует wp-settings.php, который загружает весь API WordPress и довел нас до этого момента).

Теперь запускается функция wp () (в wp-includes / functions.php). Он использует объект WP и выполняет его основное действие. Это проверяет URL-адрес и создает необходимый запрос для получения данных, необходимых для этой страницы.

ШАБЛОН-ЗАГРУЗЧИК.PHP

Теперь последняя часть процесса загрузки. Доступны все функции (wp-settings.php) и необходимые данные загружены (wp () в functions.php).

Затем вызывается template-loader.php (из wp-load.php). Этот файл определяет, какой шаблон загружается.

Первое, что он делает, это дает вам ловушку: template_redirect. Если вы знаете (на основе загруженных данных), что вам потребуется альтернативный шаблон, отличный от того, который обычно загружается, это ваша ловушка. Примером может быть страница с ограниченным доступом, которая загружает форму входа в систему, если текущий пользователь не вошел в систему.

Затем WordPress проверяет, является ли текущий запрос HTTP-запросом заголовка. Они используются только для получения заголовка http (например, чтобы проверить, существует ли определенная страница, изменилась ли она…). Если такой запрос обнаружен, остальная часть страницы не отображается. Если вы получаете много таких запросов, это может немного сэкономить пропускную способность сервера.

Затем template-loader.php проверяет наличие трех особых случаев: роботов (робот Google индексирует вашу страницу), страницу, читаемую как RSS-канал или обратную ссылку. Если что-либо из этого обнаружено, обычный файл шаблона загружать не нужно.

Если это не особый случай, WordPress просматривает список возможных шаблонов. Каждая строка сначала проверяет, выполняется ли условие (is_404 (), is_search (),…). Если условие выполнено, он проверяет, существует ли соответствующий шаблон в текущей теме. Если он находит совпадение, это значение сохраняется в переменной $ template.

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

Вы получаете последний фильтр (template_include) перед тем, как он будет окончательно включен, и вы, наконец, увидите результат в браузере.