Перейти к основному содержимому

Загрузчик файлов Addon Sunrise

Ultimate Multisite 2.8.0 добавляет загрузчик расширений sunrise для аддонов и кастомных интеграций MU-plugin, которым необходимо работать во время начальной загрузки WordPress (sunrise bootstrapping), без необходимости редактировать сгенерированный файл wp-content/sunrise.php.

Когда это использовать

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

Для обычных интеграций предпочтительнее использовать стандартные плагины WordPress, MU-плагины и задокументированные хуки Ultimate Multisite. Код sunrise выполняется очень рано, поэтому он должен быть небольшим, защищенным и не зависеть от внешних компонентов.

Соглашение об именовании файлов

Создайте PHP-файл с именем sunrise.php в директории аддона, название которой начинается с ultimate-multisite-:

wp-content/plugins/ultimate-multisite-example-addon/sunrise.php

Загрузчик сканирует директорию плагинов по этому шаблону:

wp-content/plugins/ultimate-multisite-*/sunrise.php

Соответствующие файлы загружаются в алфавитном порядке, согласно пути аддона.

Куда поместить файл

Поместите файл в корневую директорию аддона, который отвечает за поведение sunrise:

wp-content/
└── plugins/
└── ultimate-multisite-example-addon/
├── ultimate-multisite-example-addon.php
└── sunrise.php

Сканирование происходит относительно WP_CONTENT_DIR, а не относительно текущего значения WP_PLUGIN_DIR. Это обеспечивает стабильность обнаружения, даже если при многопользовательской архитектуре (multi-tenancy) или другом раннем коде загрузки (bootstrap) меняются константы директории плагинов.

Не редактируйте напрямую сгенерированный файл wp-content/sunrise.php. Загрузчик позволяет кастомному коду расширять поведение sunrise, не изменяя при этом основной файл sunrise, который устанавливает и обновляет Ultimate Multisite.

Доступные хуки и фильтры

Файлы аддонов sunrise запускаются после того, как Ultimate Multisite завершил сопоставление доменов, и до того, как WordPress вызовет ms_loaded. На этом этапе файл sunrise может:

  • читать или переопределять $current_site и $current_blog;
  • получать доступ к $wpdb после загрузки конфигурации базы данных;
  • определять константы времени sunrise, такие как BLOG_ID_CURRENT_SITE, при необходимости;
  • читать состояние вспомогательных функций Ultimate Multisite для sunrise, включая состояние маршрутизации, используемое интеграциями многопользовательской архитектуры.

Ultimate Multisite вызывает wu_sunrise_loaded после завершения работы своего загрузчика sunrise. Используйте этот action для кода, который должен выполниться после завершения начальной загрузки (bootstrap) sunrise, но все еще относится к жизненному циклу sunrise.

Вызывайте только те функции, которые уже загружены на этапе sunrise. Избегайте ресурсоемкой работы с базой данных, рендеринга шаблонов, HTTP-запросов и кода, который предполагает, что завершен обычный порядок загрузки плагинов.

Минимальный пример

<?php
/**
* Расширение sunrise для кастомной интеграции хоста.
*/

if (! defined('ABSPATH')) {
exit;
}

if (isset($current_blog) && $current_blog instanceof stdClass) {
// Корректировка ранней маршрутизации или констант до ms_loaded.
}

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