Поиск директорий с темами в WordPress: функция `search_theme_directories()`

Поиск директорий с темами в WordPress

Функция search_theme_directories() позволяет искать все зарегистрированные директории тем и находить в них полные и действительные темы.

Использование функции

search_theme_directories( $force );

Параметры:

  • $force (bool): Указывает, нужно ли принудительно выполнять новый поиск в директориях. По умолчанию равно false.

Возвращаемое значение

Функция возвращает массив с найденными темами или false, если ничего не найдено.

Пример

Вы можете использовать следующую команду, чтобы получить информацию о всех темах:


$theme_dirs = search_theme_directories();
print_r( $theme_dirs );
/ Выводит:
Array
(
[ShoppingTheme] => Array
(
[theme_file] => ShoppingTheme/style.css
[theme_root] => C:/sites/example.com/www/wp-content/themes
)
...
)
/

Примечания

  • Глобальная переменная: $wp_theme_directories.

Изменения

  • Версия: Функция была введена в WordPress 2.9.0.

Как работает функция

Функция search_theme_directories() выполняет следующее:

  1. Проверяет, есть ли зарегистрированные директории тем.
  2. Если параметр $force равен false и темы уже были найдены ранее, функция возвращает их из кэша.
  3. Если нет, она ищет темы в каждой зарегистрированной директории.
  4. Для каждой директории проверяет, есть ли в ней папки с файлами стилей style.css.
  5. Собранные темы сохраняются в массив и могут быть использованы для дальнейшей работы.

Пример кода

Вот как выглядит реализация функции:


function search_theme_directories( $force = false ) {
global $wp_theme_directories;
static $found_themes = null;

if ( empty( $wp_theme_directories ) ) {
    return false;
}

if ( ! $force && isset( $found_themes ) ) {
    return $found_themes;
}

$found_themes = array();
$wp_theme_directories = (array) $wp_theme_directories;

foreach ( $wp_theme_directories as $theme_root ) {
    $dirs = @ scandir( $theme_root );
    if ( ! $dirs ) {
        wp_trigger_error( __FUNCTION__, "$theme_root is not readable" );
        continue;
    }
    foreach ( $dirs as $dir ) {
        if ( ! is_dir( $theme_root . '/' . $dir ) || '.' === $dir[0] ) {
            continue;
        }
        if ( file_exists( $theme_root . '/' . $dir . '/style.css' ) ) {
            $found_themes[ $dir ] = array(
                'theme_file' => $dir . '/style.css',
                'theme_root' => $theme_root,
            );
        }
    }
}

asort( $found_themes );
return $found_themes;

}

Заключение

Функция search_theme_directories() — полезный инструмент для разработчиков и администраторов WordPress, позволяющий находить темы на вашем сайте. Она помогает эффективно управлять темами и упрощает процесс их поиска.

Если у вас остались вопросы или вы хотите узнать больше о связанных функциях, не стесняйтесь спрашивать!

Leave a Reply

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