Проверка поддержки функции темы в WordPress с помощью функции current_theme_supports()
Функция current_theme_supports() предназначена для проверки, поддерживает ли текущая тема определённую функциональность. Это полезно для разработчиков, которые хотят адаптировать свои темы в зависимости от наличия тех или иных возможностей.
Пример использования
current_theme_supports( 'custom-logo' );
current_theme_supports( 'html5', 'comment-form' );
Производительность
- Время выполнения — 0.000013 секунд (очень быстро)
- 50,000 вызовов — 0.01 секунд (на скорости света)
Что возвращает функция
Функция возвращает:
- true — если ваша тема поддерживает запрашиваемую функцию.
- false — если не поддерживает.
Синтаксис использования
current_theme_supports( $feature, ...$args );
- $feature (string) (обязательный) — функция, поддержку которой проверяем. Список возможных значений можно найти в функции
add_theme_support(). - ...$args (mixed) (необязательный) — дополнительные аргументы, которые могут потребоваться для проверки определённых функций.
Примеры кода
Проверка, поддерживает ли тема функциональность
if( current_theme_supports( 'custom-header' ) ){
// Выполняем действие, если поддерживается функция custom-header
}
Общие заметки
- Глобальная переменная:
$_wp_theme_features— хранит все функции, которые поддерживает текущая тема.
Журнал изменений
- С версии 2.9.0 — функция была введена.
- С версии 5.3.0 — была уточнена уже существующая документация о параметре
...$args.
Пример реализации функции
Следующий код демонстрирует, как работает функция current_theme_supports():
function current_theme_supports( $feature, ...$args ) {
global $_wp_theme_features;
if ( 'custom-header-uploads' === $feature ) {
return current_theme_supports( 'custom-header', 'uploads' );
}
if ( ! isset( $_wp_theme_features[ $feature ] ) ) {
return false;
}
// Если аргументы не переданы, дополнительных проверок не требуется.
if ( ! $args ) {
return apply_filters( "current_theme_supports-{$feature}", true, $args, $_wp_theme_features[ $feature ] );
}
switch ( $feature ) {
case 'post-thumbnails':
// Проверяем, зарегистрированы ли миниатюры для определённых типов контента.
if ( true === $_wp_theme_features[ $feature ] ) {
return true;
}
$content_type = $args[0];
return in_array( $content_type, $_wp_theme_features[ $feature ][0], true );
case 'html5':
case 'post-formats':
$type = $args[0];
return in_array( $type, $_wp_theme_features[ $feature ][0], true );
case 'custom-logo':
case 'custom-header':
case 'custom-background':
return ( isset( $_wp_theme_features[ $feature ][0][ $args[0] ] ) && $_wp_theme_features[ $feature ][0][ $args[0] ] );
}
return apply_filters( "current_theme_supports-{$feature}", true, $args, $_wp_theme_features[ $feature ] );
}
Связанные функции
add_theme_support()— добавляет поддержку новой функциональности для вашей темы.get_header_image()— получает изображение заголовка для текущей темы.get_theme_support()— проверяет, поддерживает ли тема определённые функции.has_custom_logo()— проверяет, установлено ли пользовательское лого в теме.
Эта информация поможет вам понять, как работает функция current_theme_supports() и как ей пользоваться для проверки функциональности вашей темы в WordPress.