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

По | 14 июня, 2022
load_php

Продолжаем разбор файла «load.php». В данной статье я рассмотрю такие функции как:

  • wp_get_active_and_valid_themes()
  • wp_skip_paused_themes()
  • is_protected_endpoint()
  • wp_is_recovery_mode()
  • is_protected_ajax_action()

wp_get_active_and_valid_themes()

Функция «wp_get_active_and_valid_themes()» — данная функция возвращает список активных тем сайта. Сначала функция получает доступ к глобальной переменной «$pagenow». После объявляется пустой массив «$themes». Если система находится в режиме установки и файл текущей страницы «$pagenow» не соответствует «wp-activate.php», тогда возвращается пустой массив. Если путь к папке с текущего шаблона сайта(«TEMPLATEPATH») отличается от пути папки с текущими файлами стилей(«STYLESHEETPATH»), тогда в массиве «$themes» сохраняется путь к файлам стилей. Если они совпадают, тогда сохраняется путь к текущему шаблону.

load-17

При работе системы в режиме восстановления из списка активных тем удаляются все приостановленные («wp_skip_paused_themes()«). Если массив «$themes» оказался пустым, тогда загрузка шаблона пропускается.

wp_skip_paused_themes()

Функция «wp_skip_paused_themes()» — удаляет все приостановленные темы из списка активных тем. В качестве параметра ей передаётся массив «$themes» активных шаблонов сайта. После запуска этой функции объявляется переменная «$paused_themes», в которой хранится список всех приостановленных шаблонов сайта. Если этот список пустой, тогда массив «$themes» возвращается без изменений. Если нет, тогда запускается конструкция «foreach», которая перебирает массив «$themes».

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

wp_is_recovery_mode()

load-18

Функция «wp_is_recovery_mode()» — если CMS работает в режиме восстановления, тогда возвращается «TRUE».

is_protected_endpoint()

Функция «is_protected_endpoint()» — проверяет необходимость защиты конечной точки запроса. Если конечной точкой запроса является страница входа в систему «wp-login.php», тогда функция возвращает «TRUE». То есть конечную точку запроса надо защитить. Заметьте информация о текущей странице хранится в глобальном массиве «$GLOBALS».

Если конечной точкой запроса является страница административного интерфейса (это определяется функцией «is_admin()«) и это не AJAX-запрос, тогда функция возвращает «TRUE». Если это AJAX-запрос («is_protected_ajax_action()«), требующий защиты, тогда функция тоже возвращает «TRUE». Для остальных случаев применяется фильтр, который проверяет необходимость защиты конечной точки запроса и возвращает результат.

is_protected_ajax_action()

Функция «is_protected_ajax_action()» — с её помощью можно определить какой из AJAX-запросов должен быть защищён. Сперва надо определить, использовалась ли в текущем запросе Ajax-технология. Эта проверка производится с использованием функции «wp_doing_ajax()» Если нет, то работа функции заканчивается. Если же это был AJAX-запрос, тогда проверяем существование в глобальном массиве «$_REQUEST» элемпента ‘action’. Этот элемент хранит текущий запрос. Если этот элемент отсутствует, то работа функции заканчивается. Если он есть, тогда переходи к следующему шагу.

Какие же AJAX-запросы должны быть защищены? Те, которые связаны со следующими событиями:

  • Редактирование тем и плагинов («edit-theme-plugin-file»)
  • Работа Javascript — таймера («heartbeat»)
  • Установка темы («install-theme»)
  • Установка плагина («install-plugin»)
  • Поиск плагинов («search-plugins»)
  • Поиск установленного плагина («search-install-plugins»)
  • Обновление плагина («update-plugin»)
  • Обновление темы («update-theme»)

Если элемент «action» в массиве «$_REQUEST» содержит одну из перечисленных событий, значит этот AJAX-запрос должен быть защищён. В этом случае функция возвращает «TRUE».

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

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