Функция register_theme_directory() в WordPress используется для регистрации директории, в которой могут находиться темы. Это позволяет системе WordPress распознавать темы, расположенные в пользовательских папках, отличных от стандартной директории тем /wp-content/themes/.
register_theme_directory( string $directory ): bool
Параметры
- $directory (строка) — Обязательный параметр. Определяет полный путь до папки с темами или относительный путь от директории
WP_CONTENT_DIR. Путь не должен заканчиваться на слэш/.
Возвращаемое значение
- bool — Возвращает
true, если директория была успешно зарегистрирована, илиfalse, если директория не существует.
Описание
Когда вы вызываете функцию register_theme_directory(), указанный путь добавляется в глобальный массив $wp_theme_directories. Этот массив используется WordPress для поиска и загрузки доступных тем.
Эта функция полезна, если вам нужно добавить нестандартную папку для хранения тем, например, внутри вашего плагина или другой кастомной директории.
Пример 1: Регистрация директории с темами внутри плагина
Предположим, у вас есть плагин с следующей структурой:
/my-plugin/
/my-plugin.php
/themes/
В этом случае, вы можете зарегистрировать директорию /themes как папку для тем, используя следующий код:
<?php
/*
* Для структуры плагина такого вида:
*
* /my-plugin
* /my-plugin.php
* /themes/
*
* Этот код нужно разместить в файле my-plugin.php.
*/
register_theme_directory( dirname( __FILE__ ) . '/themes' );
Пример 2: Регистрация пользовательской директории с темами
Предположим, что вам нужно зарегистрировать нестандартную директорию /custom-themes, которая находится за пределами директории плагинов. Вот пример:
<?php
// Регистрация директории /custom-themes как директории для тем.
register_theme_directory( '/var/www/html/custom-themes' );
Как это работает
Функция добавляет указанную директорию в массив $wp_theme_directories, который используется WordPress для поиска тем. Если в этой директории найдены темы, они становятся доступными для активации через административную панель.
Важные замечания
- Не забывайте об отсутствии слэша на конце пути. При передаче пути в функцию, слэш в конце строки не нужен.
- Относительные пути: Можно передавать относительные пути относительно директории
WP_CONTENT_DIR, что удобно для регистрации тем в пределах папкиwp-content.
Заключение
Функция register_theme_directory() предоставляет удобный способ расширить возможности WordPress по загрузке тем из различных директорий. Это может быть полезно для разработчиков плагинов или для тех, кто хочет использовать нестандартные пути для хранения тем.