Функция wp_get_themes()
возвращает массив объектов WP_Theme
, основанный на переданных аргументах. Несмотря на свои возможности, данная функция является довольно ресурсоемкой, и ее производительность линейно увеличивается с добавлением новых тем. В целях оптимизации рекомендуется использовать функцию wp_get_theme()
, если это возможно.
wp_get_themes( array $args = array() ): WP_Theme[]
Параметры
- $args (array, optional): Массив аргументов для фильтрации тем.
- errors (mixed):
true
— вернуть темы с ошибками.false
— вернуть темы без ошибок (по умолчанию).null
— вернуть все темы.
- allowed (mixed, для мультисайтов):
true
— вернуть только разрешенные для сайта темы.false
— вернуть недоступные для сайта темы.'site'
— вернуть только разрешенные для сайтов сети.'network'
— вернуть только разрешенные для сети.null
— вернуть все темы (по умолчанию).
- blog_id (int, для мультисайтов): ID блога, для которого будут учитываться разрешенные темы. По умолчанию
0
(текущий блог).
- errors (mixed):
По умолчанию:
array( 'errors' => false, 'allowed' => null, 'blog_id' => 0 )
Возвращаемое значение
Возвращает массив объектов WP_Theme[]
.
Пример 1: Получение всех существующих тем
Чтобы получить данные всех доступных тем, можно использовать следующий код:
<?php
$all_themes = wp_get_themes();
print_r($all_themes);
Результат:
Array
(
[twentyseventeen] => WP_Theme Object
(
[theme_root:WP_Theme:private] => /path/to/site/wp-content/themes
[headers:WP_Theme:private] => Array
(
[Name] => Twenty Seventeen
[ThemeURI] => https://wordpress.org/themes/twentyseventeen/
[Description] => Twenty Seventeen brings your site to life with header video and immersive featured images...
[Author] => the WordPress team
[AuthorURI] => https://wordpress.org/
[Version] => 1.3
[Template] =>
[Status] =>
[Tags] => one-column, two-columns, right-sidebar, ...
[TextDomain] => twentyseventeen
[DomainPath] =>
)
...
)
)
Пример 2: Получение тем с ошибками
Чтобы получить только темы, содержащие ошибки, используйте параметр errors
:
<?php
$themes_with_errors = wp_get_themes( array( 'errors' => true ) );
print_r($themes_with_errors);
Пример 3: Получение разрешенных тем для сети
Для получения тем, разрешенных в сети, используйте параметр allowed
:
<?php
$network_allowed_themes = wp_get_themes( array( 'allowed' => 'network' ) );
print_r($network_allowed_themes);
Дополнительная информация
Функция wp_get_themes()
основывается на функции search_theme_directories()
, которая фактически выполняет поиск тем в папке themes
. Работает аналогично функции для получения данных плагинов — get_plugins()
.
Примечания
- Производительность
wp_get_themes()
может пострадать при наличии большого количества тем, поэтому рекомендуется использовать ее с осторожностью. - Если необходимо просто получить названия всех тем (названия директорий тем), можно воспользоваться функцией
search_theme_directories()
.
Заключение
Функция wp_get_themes()
является мощным инструментом для работы с темами в WordPress, однако стоит помнить о ее производительности при использовании в проектах с большим количеством тем.