Функция 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, однако стоит помнить о ее производительности при использовании в проектах с большим количеством тем.