blocks.getBlockAttributes — это мощный фильтр в WordPress, который позволяет разработчикам изменять атрибуты блоков сразу после их стандартной обработки, но перед валидацией. Эта функция предоставляет гибкость в настройке и динамическом изменении атрибутов блоков, увеличивая возможности кастомизации редактора.
Основные параметры функции
Функция blocks.getBlockAttributes принимает четыре параметра:
blockAttributes
(Object): Все атрибуты блока.blockType
(Object): Тип блока.innerHTML
(string): Сырой контент блока.attributes
(Object): Известные атрибуты блока из разделителей.
Пример использования
В следующем примере мы используем фильтр blocks.getBlockAttributes
, чтобы задать начальный цвет фона для блоков цитаты, если он еще не установлен:
// Функция фильтра
function setDefaultQuoteBackground(blockAttributes, blockType) {
if ('core/quote' === blockType.name && !blockAttributes.backgroundColor) {
blockAttributes['backgroundColor'] = 'lightgrey';
}
return blockAttributes;
}
// Добавление фильтра
wp.hooks.addFilter(
'blocks.getBlockAttributes',
'my-plugin/set-default-quote-background',
setDefaultQuoteBackground
);
Дополнения и модификации
Вы можете использовать данный фильтр для различных блоков и целей. Например, добавление кастомного CSS-класса для галерей:
// Функция для добавления CSS-класса
function addGalleryCustomClass(blockAttributes, blockType) {
if ('core/gallery' === blockType.name) {
blockAttributes['className'] = (blockAttributes['className'] || '') + ' my-custom-gallery';
}
return blockAttributes;
}
// Применение фильтра
wp.hooks.addFilter(
'blocks.getBlockAttributes',
'my-plugin/add-gallery-custom-class',
addGalleryCustomClass
);
Использование фильтра blocks.getBlockAttributes позволяет вам внедрять функциональность без изменения исходного кода редактора, что улучшает поддержку и обновление вашего WordPress сайта.
Заключение
Фильтр blocks.getBlockAttributes — это превосходный инструмент для разработчиков, который предлагает гибкие возможности модификации атрибутов блоков. Благодаря ему можно достичь более персонализированного и адаптированного под ваши нужды интерфейса редактирования контента.