Проверка поддержки функции темы в WordPress: current_theme_supports()

Проверка поддержки функции темы в 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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *