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

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()” – помечает указанную группу/группы как непостоянный кэш, т.е. который не нужно сохранять для межсессионного использования. Не сохранять кэш между сессиями полезно, когда нужно добавить данные в кэш, который используется только в течении текущей генерации страницы или исполнения скрипта. Это могут быть меняющиеся данные предназначенные всего для одной генерации страницы.

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.