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

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” для отображения уведомления администратору сайта. После проделанной работы возвращается список активных плагинов.

You may also like...

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

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

  • Sign up
Lost your password? Please enter your username or email address. You will receive a link to create a new password via email.