Ядро WordPress. Файл «load.php». Часть 4

По | 14 июня, 2022
load_php

Следующая группа рассматриваемых функций файла «load.php» имеет отношение к работе со списком активных плагинов.

wp_not_installed()

Функция «wp_not_installed()» — проверяет правильность установки CMS WordPress. При помощи функции «is_multisite()» выясняем располагается ли сайт на поддомене(домен третьего, четвёртого уровня и так далее). Если он находится именно там, тогда используя функцию «is_blog_installed()» проверяем правильность установки CMS. Если отсутствуют определённые таблицы, тогда считаем, что установка прошла с ошибками. Работа скрипта, в этом случае, прекращается. При отсутствии ошибок проверяем «флаг» установки WordPress. Это возможно сделать при помощи функции «wp_installing()«. Если система находится в режиме установки, тогда статической переменной «$installing» присваивается значение «TRUE». В противном случае её значение равно «FALSE». Если значение «флага» равно «FALSE», тогда работа скрипта тоже прекращается. Для прекращения работы используется уже знакомая функция «wp_die()«. Функция «nocache_headers()» устанавливает заголовок для браузера, благодаря которому предотвращается кеширование страницы.

load-14

Если сайт располагается на домене второго уровня, но при этом был установлен с ошибками и значение «флага» установки WordPress равно «FALSE», то подключаются файлы «kses.php» и «pluggable.php» из папки «wp-includes». После этого подключается файл «install.php» из папки «wp-admin». Запускается процесс установки WordPress. После этого происходит перенаправление на нужную страницу. Работа скрипта заканчивается.

wp_get_mu_plugins()

Функция «wp_get_mu_plugins()» — получение списка файлов всех Must-use плагинов. Что это за плагины? Они обязательны к использованию. Всегда располагаются в папке » /wp-content/mu-plugins». Они не могут находится в подпапках. Их невозможно отключить через административную панель. Для отключения нужно удалить файл плагина из каталога «wp-content/mu-plugins».

При запуске данной функции в первую очередь объявляется пустой массив «$mu_plugins». Далее обращаемся к именной константе «WPMU_PLUGIN_DIR». Если она содержит путь к файлу, тогда функция возвращает пустой массив. Если константа содержит путь к папке, тогда функция пытается открыть её используя «opendir()«. При неудачной попытке возвращается пустой массив «$mu_plugins». В ином случае содержимое папки считывается функцией «readdir()«.

Сама функция «readdir()» возвращает имя элемента папки. Если в полученном имени имеется подстрока «.php», тогда элемент является файлом. Поэтому путь к этому файлу заносится в массив «$mu_plugins». После заполнения массива «$mu_plugins» папка «wp-content/mu-plugins» закрывается. В самом массиве элементы сортируются в порядке возрастания. Для сортировки используется функция «sort()«. После этого функция «wp_get_mu_plugins()» возвращает массив «$mu_plugins».

wp_get_active_and_valid_plugins()

load-15

Функция «wp_get_active_and_valid_plugins()» — возвращает список всех активных плагинов. Список всех активных плагинов временно хранится в массиве «$plugins». Используя функцию «get_option()«, из таблицы «options» базы данных мы получаем список файлов всех активных плагинов, представленный в виде массива «$active_plugins». В самой базе данных информация об активных плагинах хранится в таком виде:

active_plugins-load-15-1
  • «i» — это сокращение от «integer». Обозначает «целое число». Число, следующее за «i», указывает на индекс массива.
  • «s» — это сокращение от «string». Обозначает строку. Число, следующее за «s», указывает на длину строки. Сама строка следует далее. В ней указана папка, где находится файл плагина и название самого файла.

Далее проверяем опцию «hack_file». Если её значение равно «1», тогда проверяем существование файла «my-hacks.php». Этот файл использовался в ранних версиях WordPress. Сейчас он просто отсутствует. Если он был обнаружен, тогда функция «_deprecated_file()» выдаст, при необходимости, сообщение о том, что файл устарел. Сам путь к этому файлу добавляется в начало массива «$plugins» при помощи функции «array_unshift()«.

Если оказалось, что список активных плагинов пуст или CMS находится в режиме установки, тогда возвращается массив «$plugins». Этот массив может быть пустым, а может содержать запись о расположении файла «my-hacks.php».

Если система установлена и имеется список активных плагинов, тогда пробуем получить ещё один список активных плагинов «$network_plugins». Но этот список будет заполнен только тогда, когда сайт расположен ниже домена второго уровня.

На последнем этапе работы функции «wp_get_active_and_valid_plugins()» осуществляется перебор списка всех активных плагинов. При помощи «validate_file()» проверяется каждый элемент списка. Если данная функция возвращает «false», то возможно элемент списка содержит путь к файлу. Этот путь должен оканчиваться подстрокой «.php» и функция «file_exists()» должна подтвердить, что по указанному пути располагается файл. Последняя проверка должна подтвердить, что указанный путь отсутствует в списке «$network_plugins». Только после всех этих проверок анализируемый путь попадает в окончательный список активеых плагинов.

Если WordPress работает в режиме восстановления («wp_is_recovery_mode()«), тогда из списка активных плагинов удаляются все приостановленные плагины. Удалением занимается функция «wp_skip_paused_plugins()«.

wp_skip_paused_plugins()

load-16

Функция «wp_skip_paused_plugins()» — удаляет все приостановленные плагины из списка активных плагинов («$plugins»). В качестве параметра, функция получает список активных плагинов, представленный в виде массива. При запуске данной функции, в первую очередь, необходимо получить список всех приостановленных плагинов. Полученный список сохраняется в переменной «$paused_plugins». Если он пуст, тогда из массива активных плагинов ничего не удаляется. В ином случае перебирается массив активных плагинов с помощью конструкции «foreach».

В процессе перебора, при помощи языковой конструкции «list()» переменной «$plugin» присваивается массив, который содержит название папки, где содержится плагин, и имя файла плагина. Затем используется функция «array_key_exists()«, которая проверяет существование в списке «$paused_plugins» элемента с одним из тех ключей, что указаны в массиве «$plugin». Если такой элемент будет обнаружен, тогда он удаляется из списка активных плагинов «$plugins» и в тоже время добавляется в глобальный массив «$GLOBALS» для отображения уведомления администратору сайта. После проделанной работы возвращается список активных плагинов.

Добавить комментарий

Ваш адрес email не будет опубликован.