Регистрация каталога тем в WordPress с помощью функции register_theme_directory()
Функция register_theme_directory() была представлена в версии WordPress 2.9.0 и используется для регистрации каталога, который может содержать темы.
Параметры функции
- Параметр
$directory— это путь к папке с темами. Обратите внимание, что в конце пути не должно быть символа/. Этот путь добавляется в глобальный массив$wp_theme_directories, который применяется при получении пути или URL к папке тем WordPress.
Возврат значения
Функция возвращает:
true— если каталог тем был успешно зарегистрирован;false— если указанный каталог не сущ��ствует.
Использование
Для регистрации каталога вы можете использовать следующий синтаксис:
register_theme_directory( $directory );
Где:
$directory(строка) — это обязательный параметр. Он может содержать полный путь к папке с темами или подпапку внутриWP_CONTENT_DIR.
Пример
Пример регистрации каталога тем
Предположим, у вас есть структура плагина следующего вида:
/my-plugin
/my-plugin.php
/themes/
Вам необходимо зарегистрировать папку themes как каталог для тем. Для этого добавьте следующий код в файл my-plugin.php:
/*
* Регистрация каталога тем
*/
register_theme_directory( dirname( __FILE__ ) . '/themes' );
Замечания
- Обратите внимание, что
$wp_theme_directories— это глобальный массив, который хранит пути к зарегистрированным каталогам тем.
Изменения
Функция register_theme_directory() была внедрена в версии 2.9.0.
Код функции
Вот как выглядит реализация функции register_theme_directory() в коде WordPress:
function register_theme_directory( $directory ) {
global $wp_theme_directories;
if ( ! file_exists( $directory ) ) {
// Пытаемся приписать, так как каталог тем может быть относительным к каталогу контента.
$directory = WP_CONTENT_DIR . '/' . $directory;
// Если этот каталог не существует, возвращаем false и не регистрируем.
if ( ! file_exists( $directory ) ) {
return false;
}
}
if ( ! is_array( $wp_theme_directories ) ) {
$wp_theme_directories = array();
}
$untrailed = untrailingslashit( $directory );
if ( ! empty( $untrailed ) && ! in_array( $untrailed, $wp_theme_directories, true ) ) {
$wp_theme_directories[] = $untrailed;
}
return true;
}
Связанные функции
Функция register_theme_directory() полезна в связке с другими функциями для работы с темами:
get_parent_theme_file_path()— возвращает путь к файлу родительской темы.get_stylesheet_directory()— возвращает путь к каталогу текущей темы.get_theme_file_uri()— получает URL для файла темы.
Используйте эти функции для более гибкой работы с темами в WordPress.