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

load_php

Завершаем разбор файлф “load.php”. Осталось рассмотреть следующие функции:

  • wp_installing()
  • is_ssl()
  • wp_convert_hr_to_bytes()
  • wp_is_ini_value_changeable()
  • wp_doing_ajax()
  • wp_using_themes()
  • wp_doing_cron()
  • is_wp_error()
  • wp_is_file_mod_allowed()
  • wp_start_scraping_edited_file_errors()
  • wp_finalize_scraping_edited_file_errors()
  • wp_is_json_request()
  • wp_is_jsonp_request()
  • wp_is_xml_request()

wp_installing() и is_ssl()

Функция “wp_installing()” – выясняет, работает ли WordPress в режиме установки или нет. При необходимости, с её помощью можно включить или выключить режим установки WordPress. Включение или выключение этого режима возможно только в том случае, когда функции передаётся параметр “$is_installing”. Он может иметь люьое значение, но лучше всего использовать значения “TRUE” или “FALSE”.

load-26

Что же происходит в теле этой функции? Для начала объявляется статическая переменная “$installing”. Ей присваивается значение “null”. Далеее проверяется текущий статус режима установки. Если именная константа “WP_INSTALLING” определена и её значение равно “TRUE”, тогда переменной “$installing” присваивается значение “TRUE”. Это означает, что WordPress находится в режиме установки.

Если не был указан параметр “$is_installing”, тогда функция вернёт текущий статус режима установки. Если же он был передан, тогда в переменной “$old_installing” сохраняется текущий статус режима установки WordPress, а переменной “$installing” присваивается новый статус, указанный в передаваемом параметре.

Функция “is_ssl()” – определяет, используется ли протокол SSL. Сначала проверяется существование элемента “HTTPS” глобального массива “$_SERVER”. Если значение этого элемента равно “on” или “1”, значит этот протокол используется. Поэтому функция возвращает “TRUE”. Если элемент “HTTPS” не существует, тогда проверяется наличие элемента “SERVER_PORT”. Если он имеется и его значение равно “443”, тогда функция возвращает “TRUE”, так как это говорит об использовании SSL-протокола. Если отсутствует и этот элемент, значит протокол SSL не используется.

wp_convert_hr_to_bytes() и wp_is_ini_value_changeable()

load-27

Функция “wp_convert_hr_to_bytes()” – преобразует сокращенное байтовое значение в целочисленное байтовое значение. Например строка “1Мb” в целочисленном виде будет равна 1048576 байтам. В качестве параметра функция получает сокращённое байтовое значение. Затем у этой строки, справа и слева, удаляются пробелы (или другие символы) и она переводится в нижний регистр функцией “strtolower()“. При использовании неявного приведения типов, в данном случае приведение строки к целочисленному типу, остаётся только число. Все литеры убираются. Далее полученное число умножается на значение одной из именных констант. Эти константы определены в файле “default-constants.php”, расположенном в папке “wp-includes”. Итоговое значение переменной “$bytes” передаётся функции “min()“, которая вернёт минимальное значение из двух предложенных.

Функция “wp_is_ini_value_changeable()” – данная функция получает название ini-параметра, а затем определяет, является ли его значение изменяемым во время выполнения скрипта.

wp_doing_ajax(), wp_using_themes(), wp_doing_cron(), is_wp_error() и wp_is_file_mod_allowed()

load-28

Функция “wp_doing_ajax()” – определяет, является ли текущий запрос WordPress Ajax-запросом. Для этого функция обращается к именной константе “DOING_AJAX”. Она определяется в файле “async-upload.php”, который находится в папке “wp-admin”. Если значение этой константы равно “TRUE”, тогда это Ajax-запрос.

Функция “wp_using_themes()” – определяет, надо ли текущим запросом использовать тему. Эта функция обращается к именной константе “WP_USE_THEMES”. Эта константа объявляется в файле “index.php”. Если значение этой константы равно “TRUE”, тогда следует использовать тему.

Функция “wp_doing_cron()” – определяет, является ли текущий запрос запросом WordPress cron. Эта функция обращается к именной константе “DOING_CRON”. Эта константа объявляется в файле “wp-cron.php”. Если значение этой константы равно “TRUE”, тогда это Cron-запрос.

Функция “is_wp_error()” – проверяет, является ли переменная объектом класса “WP_Error“. В качестве параметра ей передаётся переменная. Затем при помощи оператора “instanceof” определяется, является ли переданная переменная экземпляром указанного класса “WP_Error“.

Функция “wp_is_file_mod_allowed()” – определяет, разрешены ли модификации файлов. Эта функция обращается к именной константе “DISALLOW_FILE_MODS”. Если её значение равно “TRUE”, тогда любое редактирование файлов в файловой системе WordPress (кроме директории для загрузок wp-content/uploads) запрещается. То есть вы больше не сможете устанавливать и обновлять темы и плагины через панель администратора. Вам придётся это делать вручную.

wp_start_scraping_edited_file_errors() и wp_finalize_scraping_edited_file_errors()

load-29

Функция “wp_start_scraping_edited_file_errors()” – осуществляет предварительные манипуляции перед тем как вывести сообщение об ошибке возникшей при работе скрипта. Сперва функция обращается к глобальному массиву “$_REQUEST”. В нём она пытается найти элементы “wp_scrape_key” или “wp_scrape_nonce”. Если один из них отсутствует, тогда функция прекращает свою работу. Если оба элемента присутствуют, тогда функция получает значение элемента “wp_scrape_key”. Из него удаляются все слеши. Далее из полученной строки, при помощи функции “sanitize_key()“, удаляются все символы, кроме: 1)латинских букв, 2)цифр, 3) тире и 4) нижнее подчёркивание. После очистки из полученной строки извлекается подстрока длиной в 32 символа и сохраняется в переменной “$key”.

Из полученного значения элемента “wp_scrape_nonce” просто удаляются все слеши. Полученная строка сохраняется в переменной “$nonce”. Затем при помощи функции “get_transient()” получаем значение временной опции, которое сравнивается со значением переменной “$nonce”. Если значения не равны, тогда пользователю отправляется сообщение об ошибке в JSON формате. После этого работа скрипта прекращается.

Если же значения совпадают, тогда функция “wp_start_scraping_edited_file_errors()” определяет, при необходимости, именную константу “WP_SANDBOX_SCRAPING”. Далее при помощи “register_shutdown_function()” регистрируется функция “wp_finalize_scraping_edited_file_errors()“, которая выполнится при завершении работы скрипта.

Функция “wp_finalize_scraping_edited_file_errors()” – выводит информацию о последней ошибке на экран монитора, используя JSON формат. Сначала получаем информацию о последней произошедшей ошибке, используя функцию “error_get_last()“. Результат сохраняется в переменной “$error”. С этого момента она становится массивом. Если массив запоплнен, тогда функция пытается выяснить тип последней ошибки. Если он соответствует одному из перечисленных (E_CORE_ERROR, E_COMPILE_ERROR, E_ERROR, E_PARSE, E_USER_ERROR, E_RECOVERABLE_ERROR), тогда в массиве “$error” строки, содержащие абсолютный путь к файлу, в котором возникла ошибка, будут подвергнуты преобразованию. В них путь к корню сайта заменяется функцией “str_replace()” на пустую строку. Затем выводится сообщение JSON формата о возникшей ошибке.

wp_is_json_request() и wp_is_jsonp_request()

load-30

Функция “wp_is_json_request()” – проверяет, является ли текущий запрос запросом JSON. Делается это двумя способами. В первом способе проверяется существование элемента “HTTP_ACCEPT” в глобальном массиве “$_SERVER”. Если он существует и хранящаяся в нём строка содержит подстроку “application/json”, тогда запрос имеет JSON формат.

Во втором способе проверяется существование элемента “CONTENT_TYPE” в глобальном массиве “$_SERVER”. Если он существует и значение этого элемента соответствует “application/json”, тогда запрос имеет JSON формат. В остальных случаях запрос имеет иной формат.

Функция “wp_is_jsonp_request()” – проверяет, является ли текущий запрос запросом JSONP. Тут ситуация немного иная. В первую очередь анализируется глобальный массив “$_GET”. В нём ищется элемент “_jsonp”. Если он не обнаружен, тогда запрос не имеет JSONP формат. В ином случае проверяется существование функции “wp_check_jsonp_callback()“. С её помощью проверяется элемент “_jsonp” массива “$_GET”. Если проверка не пройдена, тогда работа функции “wp_is_jsonp_request()” прекращается. Если пройдена, тогда при помощи “apply_filters()” выясняем, включена ли поддержка JSONP формата. Результат сохранается в переменной “$jsonp_enabled”.

load-31

Функция “wp_is_xml_request()” – проверяет, является ли текущий запрос XML-запросом. Делается это двумя способами. В первом способе проверяется существование элемента “HTTP_ACCEPT” в глобальном массиве “$_SERVER”. Если он существует и хранящаяся в нём строка содержит одну из строк, указанных в массиве “$accepted”, тогда запрос имеет XML формат.

Во втором способе проверяется существование элемента “CONTENT_TYPE” в глобальном массиве “$_SERVER”. Если он существует и хранящаяся в нём строка содержит одну из строк, указанных в массиве “$accepted”, тогда запрос имеет XML формат. В остальных случаях запрос имеет иной формат.

На этом разбор файла “load.php” окончен. Теперь я собираюсь адаптировать его для проекта “WordShift“.

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.