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

По | 14 июня, 2022
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()

Функция «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()

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

wp_convert_hr_to_bytes()

load-27

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

wp_is_ini_value_changeable()

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

wp_doing_ajax()

load-28

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

wp_using_themes()

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

wp_doing_cron()

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

is_wp_error()

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

wp_is_file_mod_allowed()

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

wp_start_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()

Функция «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()

load-30

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

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

wp_is_jsonp_request()

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

wp_is_xml_request()

load-31

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

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

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

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

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