get_block_wrapper_attributes()
Генерирует строку HTML-атрибутов для обёртки текущего блока, добавляя к ним все стили и возможности, объявленные через block supports.
Функция берёт атрибуты, которые WordPress сформировал для блока (классы выравнивания, цвета, отступы, пользовательские данные и т.д.), — и объединяет их с переданными вами значениями и возвращает готовую строку атрибутов тега блока.
Готовую строка уже очищена, поэтому её можно безопасно вставлять прямо в открывающий HTML тег обертки блока.
Метод уже экранирует каждое значение, поэтому не оборачивайте результат в esc_attr().
Контекст вызова
Функцию нужно вызывать только в месте, где фактически генерируется HTML блока — внутри функции-рендера блока или в PHP-шаблоне, который WordPress обрабатывает как блок-темплейт.
Другими словами, во время рендеринга конкретного экземпляра блока, когда движок уже:
- Проанализировал JSON-метаданные блока и узнал, какие «block supports» ему доступны.
- Слил атрибуты, проставленные редактором (цвета, выравнивание, кастомные классы и т.д.).
- Передал эти данные в ваш PHP-код.
Если вызвать её где-то вне этого контекста — например, в обычном хук-колбэке, который не связан с текущим блоком, — массив атрибутов ещё не будет сформирован, и функция вернёт пустую строку.
Функция работает на основе WP_Block_Supports::apply_block_supports(), которая зависит от правильно заполненной перменной WP_Block_Supports::$block_to_render, которая в свою очередь устанавливается перед вызовом render_callback функции в методе WP_Block::render():
WP_Block_Supports::$block_to_render = $this->parsed_block; $block_content = (string) call_user_func( $this->block_type->render_callback, $this->attributes, $block_content, $this );
Хуков нет.
Возвращает
Строку.
Строка— готовых к вставке атрибутов.Пустая строка— если итоговых атрибутов нет (ни от ядра, ни от вас).
Использование
get_block_wrapper_attributes( $extra_attributes );
- $extra_attributes(array)
Дополнительные атрибуты для обёртки блока в виде массива строк. Например:
[ 'class' => 'card card--highlight', 'style' => 'background:#f5f5f5', 'data-id' => 42, 'aria-label' => __( 'Карточка', 'textdomain' ), ]
По умолчанию объединяются только
style,class,idиaria-label. Любые другие ключи добавляются «как есть».По умолчанию: []
Примеры
#1 Базовый вывод динамического блока
Добавляем атрибуты обёртки в рендер-функции блока.
function myplugin_render_dynamic_block( $attributes, $content ) {
$wrapper_attributes = get_block_wrapper_attributes();
return sprintf(
'<div %1$s>%2$s</div>',
$wrapper_attributes,
$content
);
} #2 Дополнительные пользовательские атрибуты
Передаём собственный класс, inline-стиль и data-атрибут.
$wrapper_attributes = get_block_wrapper_attributes( [ 'class' => 'card card--highlight', 'style' => 'background: #f5f5f5', 'data-id' => 42, 'aria-label' => 'Карточка', ] ); echo sprintf( '<section %s>…</section>', $wrapper_attributes );
Список изменений
| С версии 5.6.0 | Введена. |