# WP_GET_THEMES() │ WP 3.4.0
Функция wp_get_themes() возвращает массив объектов тем WordPress на основе заданных параметров. Несмотря на то, что функция get_themes() была улучшена, wp_get_themes() остается достаточно ресурсоемкой, особенно если у вас много тем. Если это возможно, лучше использовать функцию wp_get_theme().
## Использование
Функция вызывается следующим образом:
```php
wp_get_themes( $args );
Параметры
$args (массив) — аргументы для поиска тем, по умолчанию пустой массив. Вот основные параметры, которые можно задать:
-
errors (разное)
Указывает, нужно ли возвращать темы с ошибками.true— возвращает темы с ошибками.false(по умолчанию) — возвращает только безошибочные темы.null— возвращает все темы.
-
allowed (разное)
Указывает, какие темы показывать на многосайтовой установке.true— возвращает только допустимые темы для сайта.false— возвращает только недопустимые темы.'site'— возвращает только разрешенные темы для сайта.'network'— возвращает только разрешенные темы на уровне сети.null(по умолчанию) — возвращает все темы.
-
blog_id (int)
Указывает идентификатор блога, для которого будут определяться разрешенные темы.
Значение по умолчанию:0(текущий блог).
Примеры
Получение данных всех существующих тем
$themes = wp_get_themes();
В переменной $themes будет массив, содержащий доступные темы. Например, он может выглядеть так:
Array
(
[twentyfourteen] => WP_Theme Object
(
[theme_root] => C:/sites/example.com/www/wp-content/themes
[headers] => Array
(
[Name] => Twenty Fourteen
[ThemeURI] => http://wordpress.org/themes/twentyfourteen
[Description] => В 2014 году наша стандартная тема поможет вам создать адаптивный сайт-галерею с современным дизайном.
[Author] => команда WordPress
[Version] => 1.0
...
)
...
)
)
Примечания
- Глобальная переменная:
$wp_theme_directories
Изменения
Функция wp_get_themes() была введена в версии 3.4.0.
Код функции
Ниже представлен код функции wp_get_themes() из файла wp-includes/theme.php:
function wp_get_themes( $args = array() ) {
global $wp_theme_directories;
$defaults = array(
'errors' => false,
'allowed' => null,
'blog_id' => 0,
);
$args = wp_parse_args( $args, $defaults );
$theme_directories = search_theme_directories();
if ( is_array( $wp_theme_directories ) && count( $wp_theme_directories ) > 1 ) {
$current_theme = get_stylesheet();
if ( isset( $theme_directories[ $current_theme ] ) ) {
$root_of_current_theme = get_raw_theme_root( $current_theme );
if ( ! in_array( $root_of_current_theme, $wp_theme_directories, true ) ) {
$root_of_current_theme = WP_CONTENT_DIR . $root_of_current_theme;
}
$theme_directories[ $current_theme ]['theme_root'] = $root_of_current_theme;
}
}
if ( empty( $theme_directories ) ) {
return array();
}
if ( is_multisite() && null !== $args['allowed'] ) {
$allowed = $args['allowed'];
if ( 'network' === $allowed ) {
$theme_directories = array_intersect_key( $theme_directories, WP_Theme::get_allowed_on_network() );
} elseif ( 'site' === $allowed ) {
$theme_directories = array_intersect_key( $theme_directories, WP_Theme::get_allowed_on_site( $args['blog_id'] ) );
} elseif ( $allowed ) {
$theme_directories = array_intersect_key( $theme_directories, WP_Theme::get_allowed( $args['blog_id'] ) );
} else {
$theme_directories = array_diff_key( $theme_directories, WP_Theme::get_allowed( $args['blog_id'] ) );
}
}
$themes = array();
static $_themes = array();
foreach ( $theme_directories as $theme => $theme_root ) {
if ( isset( $_themes[ $theme_root['theme_root'] . '/' . $theme ] ) ) {
$themes[ $theme ] = $_themes[ $theme_root['theme_root'] . '/' . $theme ];
} else {
$themes[ $theme ] = new WP_Theme( $theme, $theme_root['theme_root'] );
$_themes[ $theme_root['theme_root'] . '/' . $theme ] = $themes[ $theme ];
}
}
if ( null !== $args['errors'] ) {
foreach ( $themes as $theme => $wp_theme ) {
if ( (bool) $wp_theme->errors() !== $args['errors'] ) {
unset( $themes[ $theme ] );
}
}
}
return $themes;
}
Связанные функции
Вот несколько связанных функций, которые могут вам пригодиться:
add_theme_support()get_stylesheet()get_template()is_child_theme()wp_head()