Файл «load.php». Часть 3

По | 21 февраля, 2021
load_php

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

wp_set_lang_dir()

Функция «wp_set_lang_dir()» — устанавливает путь к папке с языковыми файлами. Это происходит только в том случае, когда не задана именная константа «WP_LANG_DIR». Она определяется в файле «default-constants.php».

load-9

Если эта константа не определена, тогда проверяется существование папки «languages» в директории «wp-content». Путь к этой директории хранится в именной переменной «WP_CONTENT_DIR». Заметьте, что при проверке используются функции «file_exists()» и «is_dir()». Первая проверяет существование указанного файла или каталога, а вторая определяет, является ли имя файла директорией. Если путь к «languages» существует, тогда он сохраняется в объявленной переменной «WP_LANG_DIR». При необходимости определяется ещё одна именная переменная «LANGDIR». Эта переменная использовалась в ранних версиях WordPress, потому её сохранили для совместимости с некоторыми плагинами.

В случает отсутствия папки «languages» в директории «wp-content», переменная «WP_LANG_DIR» хранит путь к папке «languages» в директории «wp-includes». Этот путь задаётся при помощи именных переменных «ABSPATH» и «WPINC».

require_wp_db()

load-10

Функция «require_wp_db()» — подключает файлы для работы с базой данных. В первую очередь объявляется глобальная переменная «$wpdb». В ней хранится экземпляр класса «wpdb». Затем подключается файл «wp-db.php» из директории «wp-includes». Затем проверяется существование файла «db.php» в директории «wp-content». Если такой файл имеется, тогда он тоже подключается.

Если экземпляр класса «$wpdb» существует, значит подключение к базе данных было произведено ранее. В этом случае функция прекращает свою работу. В ином случае проверяется существование именных переменных «DB_USER», «DB_PASSWORD», «DB_NAME» и DB_HOST». Все эти переменные определяются в файле «wp-config.php«. Данные, хранящиеся в них необходимы для установления подключения к базе данных. Установка подключения к базе данных происходит в момент создания экземпляра класса «wpdb».

wp_set_wpdb_vars()

load-11

«wp_set_wpdb_vars()» — данная функция проверяет наличие ошибок, возникших при соединении с базой данных, а также устанавливает значения некоторых переменных перед тем, как начнётся работа с таблицами базы данных. Сначала получаем доступ к глобальным переменным «$wpdb» и «$table_prefix». С помощью переменной «$wpdb» выясняем возникали ли ошибки при подключении к базе данных. Если возникли (об этом говорит строка: «! empty( $wpdb->error )»), тогда завершаем работу скрипта с помощью функции «dead_db()«, которая описывается в файле «functions.php».

Если ошибок не было, тогда заполняем массив «field_types» класса «wpdb». В данном массиве содержится информация о том, какие столбцы таблиц базы данных должны содержать целые числа. Данная информация потребуется в дальнейшем, в первую очередь при создании таблиц базы данных. В данном случае каждый элемент массива содержит значение «%d», что говорит о необходимости преобразования полученной строки в формат целочисленный (integer) формат. Более полную информацию вы можете прочитать тут. Далее устанавливается префикс для таблиц базы данных. Если с установкой префикса возникли проблемы (на это указывает строка «is_wp_error( $prefix )»), тогда работа скрипта прекращается.

wp_using_ext_object_cache()

load-12

Функция «wp_using_ext_object_cache()» — устанавливает/возвращает разрешение/запрет на использование кеширования внешних объектов. Информация о разрешении/запрете хранится в глобальной переменной «$_wp_using_ext_object_cache».

wp_start_object_cache()

load-13

Функция «wp_start_object_cache()» — запускает кеширование объектов. Для начала она получает доступ к глобальной переменной «$wp_filter». Далее объявляется статическая переменная «$first_init». Если значение этой переменной равно «true», тогда проверяется существование функции «wp_cache_init()«. Данная функция описана в файле «cache.php» директории «wp-includes». Если данная функция не найдена, тогда ищем в папке «wp-content» файл «object-cache.php». При обнаружении файла он подключается и опять запускается проверка существования функции «wp_cache_init()«. Если эта функция была обнаружена, тогда при помощи функции «wp_using_ext_object_cache()» устанавливается разрешение на кеширование внешних объектов.

Если первая проверка существование функции «wp_cache_init()» дала положительный результат, то есть функция была обнаружена, тогда проверяется статус кеширования внешних объектов. Если такое кеширование не разрешено, а файл «object-cache.php'» существует и находится в директории «wp-content», тогда кеширование внешних объектов разрешается.

В случае когда значение переменной «$first_init» равно «false», то есть запуск кеширования был осуществлён ранее, функция «wp_start_object_cache()» делает следующее:

  1. Проверяется разрешение на кеширование внешних объектов. Если его нет, тогда подключается файл «cache.php» из папки «wp-includes».
  2. Проверяется существование функции «wp_cache_switch_to_blog()» Данная функция описывается в файле «cache.php». Она позволяет переключиться на указанный блог в системе мультисайтов. В данном случае эта функция переключается на текущий блог. Если данная функция не обнаружена, тогда проверяется существование функции «wp_cache_init()«.
  3. Функция «wp_cache_init()» — располагается также в файле «cache.php». Она сохраняет в массиве «$GLOBALS» экземпляр класса «WP_Object_Cache», который отвечает за кэширование объектов. Если эта функция не обнаружена, тогда ничего не происходит.
  4. Проверяется существование функции «wp_cache_add_global_groups()«. Эта функция тоже описывается в файле «cache.php». Она Добавляет группу или набор групп в список кеширования. Этот список хранится в экземпляре класса «WP_Object_Cache».
  5. «wp_cache_add_non_persistent_groups()» — помечает указанную группу/группы как непостоянный кэш, т.е. который не нужно сохранять для межсессионного использования. Не сохранять кэш между сессиями полезно, когда нужно добавить данные в кэш, который используется только в течении текущей генерации страницы или исполнения скрипта. Это могут быть меняющиеся данные предназначенные всего для одной генерации страницы.

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

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