blocks.registerBlockType — это хук в WordPress, который позволяет изменять настройки блоков при их регистрации на клиенте с помощью JavaScript. Он принимает настройки блока, имя зарегистрированного блока и устаревшие настройки в качестве аргументов, что создает гибкий инструмент для кастомизации.
Фильтрация настроек блоков
Этот процесс выполняется с помощью фильтра, который можно настроить так, чтобы условия применения блоков соответствовали конкретным требованиям вашего проекта. Рассмотрим, как это работает на примере.
Пример: Добавление пользовательского класса к блоку абзаца
В следующем примере, мы добавим настройку пользовательского класса к блоку абзаца:
function addParagraphBlockCustomClass( settings, name ) {
if ( name !== 'core/paragraph' ) {
return settings;
}
return {
...settings,
supports: {
...settings.supports,
className: true,
customClassName: 'custom-paragraph-class'
},
};
}
wp.hooks.addFilter(
'blocks.registerBlockType',
'my-custom-plugin/custom-paragraph-class',
addParagraphBlockCustomClass
);
Здесь мы определяем функцию addParagraphBlockCustomClass
, которая проверяет имя блока. Если блок — это абзац, добавляется настройка поддержки для customClassName
.
Определение пользовательских атрибутов для блока
Вы можете использовать blocks.registerBlockType
для расширения блока, добавляя новые атрибуты. Посмотрим, как это делается.
Пример: Добавление атрибута заголовка к блоку изображений
function addImageBlockTitleAttribute( settings, name ) {
if ( name !== 'core/image' ) {
return settings;
}
return {
...settings,
attributes: {
...settings.attributes,
imageTitle: {
type: 'string',
source: 'text',
selector: 'figcaption',
},
},
};
}
wp.hooks.addFilter(
'blocks.registerBlockType',
'my-custom-plugin/image-title-attribute',
addImageBlockTitleAttribute
);
В данном примере функция добавляет атрибут imageTitle
к блоку изображений, что позволяет пользователю задавать заголовок для картинки.
Устаревшие настройки и их применение
Хук также позволяет обрабатывать устаревшие настройки блоков, предлагая поддержку старых версий блоков. Это обеспечивает обратную совместимость для вашего контента.
Пример: Управление устаревшими настройками для блока цитаты
function handleDeprecatedQuoteSettings( settings, name, deprecatedSettings ) {
if ( name !== 'core/quote' || !deprecatedSettings ) {
return settings;
}
return {
...settings,
deprecated: [
...(settings.deprecated || []),
deprecatedSettings,
],
};
}
wp.hooks.addFilter(
'blocks.registerBlockType',
'my-custom-plugin/deprecated-quote-settings',
handleDeprecatedQuoteSettings
);
Этот пример демонстрирует добавление устаревшего блока настроек к зарегистрированному блоку цитаты, чтобы сохранить совместимость со старыми версиями.
Заключение
Таким образом, blocks.registerBlockType
предлагает мощный способ персонализации настроек блоков, от добавления новых атрибутов до управления устаревшими настройками. Это делает блоки WordPress более гибкими и готовыми к адаптации под ваши нужды.