Поиск директорий с темами в 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() выполняет следующее:
- Проверяет, есть ли зарегистрированные директории тем.
- Если параметр
$forceравенfalseи темы уже были найдены ранее, функция возвращает их из кэша. - Если нет, она ищет темы в каждой зарегистрированной директории.
- Для каждой директории проверяет, есть ли в ней папки с файлами стилей
style.css. - Собранные темы сохраняются в массив и могут быть использованы для дальнейшей работы.
Пример кода
Вот как выглядит реализация функции:
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, позволяющий находить темы на вашем сайте. Она помогает эффективно управлять темами и упрощает процесс их поиска.
Если у вас остались вопросы или вы хотите узнать больше о связанных функциях, не стесняйтесь спрашивать!