Регистрация каталога тем в WordPress с функцией register_theme_directory()

Регистрация каталога тем в 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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *