В этой статье мы рассмотрим функцию block_has_support() в WordPress, которая используется для проверки, поддерживает ли блок определенную функциональность. Эта функция полезна для разработчиков, желающих убедиться, что конкретный блок обладает нужными характеристиками перед применением к нему каких-либо настроек или стилей.
Описание функции
Функция block_has_support() проверяет, поддерживает ли указанный блок заданную функциональность.
block_has_support( $block_type, $feature, $default )Параметры:
- $block_type(строка|WP_Block_Type): Имя блока или объект типа блока.
- $feature(строка): Название функции поддержки.
- $default(смешанный): Значение по умолчанию, если функция поддержки не определена.
Возвращаемое значение:
- trueили- falseв зависимости от того, поддерживает ли блок указанную функциональность.
Примеры использования
Рассмотрим несколько примеров использования функции block_has_support().
Проверка поддержки блока для пользовательского цвета фона
Этот пример показывает, как проверить, поддерживает ли блок core/paragraph пользовательский цвет фона:
function check_paragraph_supports_background() {
    $block_type = 'core/paragraph';
    $feature = 'color.background';
    $default = false;
    if ( block_has_support( $block_type, $feature, $default ) ) {
        echo '<p>Блок "Параграф" поддерживает пользовательский цвет фона.</p>';
    } else {
        echo '<p>Блок "Параграф" не поддерживает пользовательский цвет фона.</p>';
    }
}
add_action( 'wp_footer', 'check_paragraph_supports_background' );Проверка поддержки пользовательского отступа
Этот пример показывает, как проверить, поддерживает ли блок пользовательский отступ (padding):
function check_block_supports_padding( $block_type ) {
    $feature = 'spacing.padding';
    $default = false;
    return block_has_support( $block_type, $feature, $default );
}
// Пример использования:
$block_type = 'core/group';
if ( check_block_supports_padding( $block_type ) ) {
    echo '<p>Блок поддерживает пользовательский отступ.</p>';
} else {
    echo '<p>Блок не поддерживает пользовательский отступ.</p>';
}Использование объекта типа блока
Вы можете использовать объект типа блока вместо строки для проверки поддержки функциональности:
function check_block_support_with_object() {
    $block_type = WP_Block_Type_Registry::get_instance()->get_registered( 'core/paragraph' );
    $feature = 'color.text';
    $default = false;
    if ( block_has_support( $block_type, $feature, $default ) ) {
        echo '<p>Блок поддерживает пользовательский цвет текста.</p>';
    } else {
        echo '<p>Блок не поддерживает пользовательский цвет текста.</p>';
    }
}
add_action( 'wp_footer', 'check_block_support_with_object' );Проверка поддержки нескольких функций
Этот пример показывает, как проверить поддержку нескольких функций у блока:
function check_multiple_supports( $block_type ) {
    $features = array(
        'color.background',
        'color.text',
        'spacing.margin',
    );
    $default = false;
    foreach ( $features as $feature ) {
        if ( block_has_support( $block_type, $feature, $default ) ) {
            echo '<p>Блок поддерживает ' . esc_html( $feature ) . '.</p>';
        } else {
            echo '<p>Блок не поддерживает ' . esc_html( $feature ) . '.</p>';
        }
    }
}
// Пример использования:
check_multiple_supports( 'core/paragraph' );Заключение по block_has_support
Функция block_has_support() предоставляет разработчикам удобный способ проверки поддержки различных функций блоком Gutenberg. Это позволяет гибко адаптировать настройки и стили в зависимости от возможностей блока.
