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

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() и is_protected_endpoint()

load-18

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

Функция “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”.

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.