В экосистеме WordPress React компонент BlockVariationPicker играет ключевую роль в представлении различных вариаций блоков. Этот компонент, часто используемый в качестве интерфейса выбора в определенных блоках, как, например, в ядре блока «колонки», значимо упрощает процесс выбора варианта и настройки блоков.

Пример использования BlockVariationPicker
Рассмотрим, как можно создать кастомный блок для WordPress, используя BlockVariationPicker. Это позволит пользователям выбирать из нескольких вариантов оформления блока, что может быть полезно для применения различных стилей и компоновок.
import { registerBlockType } from '@wordpress/blocks';
import { __ } from '@wordpress/i18n';
import {
useBlockProps,
__experimentalBlockVariationPicker as BlockVariationPicker,
} from '@wordpress/block-editor';
import './editor.scss';
const MY_BLOCK_NAME = "custom-variation-block";
const MY_BLOCK_PATH = `myplugin/${MY_BLOCK_NAME}`;
registerBlockType( MY_BLOCK_PATH, {
apiVersion: 2,
title: __( 'Custom Variation Block', 'myplugin' ),
description: __( 'A custom block with multiple variations.', 'myplugin' ),
category: 'design',
icon: 'grid-view',
attributes: {
variation: {
type: 'string',
default: ''
},
},
edit: ( { attributes, setAttributes } ) => {
const blockProps = useBlockProps();
const variations = [
{
name: 'grid',
title: __('Grid', 'myplugin'),
icon: 'screenoptions',
description: __('Display items in a grid layout.', 'myplugin'),
},
{
name: 'list',
title: __('List', 'myplugin'),
icon: 'list-view',
description: __('Display items in a list format.', 'myplugin'),
},
];
return (
<div { ...blockProps }>
{ attributes.variation ? (
<p>{ __( `Selected variation: ${attributes.variation}`, 'myplugin' ) }</p>
) : (
<BlockVariationPicker
label={ __( 'Choose Layout', 'myplugin' ) }
variations={ variations }
onSelect={ ( variation ) => setAttributes( { variation: variation.name } ) }
/>
)}
</div>
);
},
save: () => {
return null; // Save function to be updated with dynamic render logic.
},
} );
Детали реализации
В данном примере мы создаем блок под названием Custom Variation Block, регистрируем его в registerBlockType и передаем атрибуты для хранения выбранной вариации. Внутри функции edit используется BlockVariationPicker, который предоставляет пользователю интерфейс выбора между разными формами отображения контента: в виде сетки или списка.
Совет: не забудьте подключить нужные стили в ‘editor.scss’, чтобы отображение в редакторе было наилучшим.
Заключение
Использование BlockVariationPicker в вашем плагине или теме WordPress позволяет разработчикам значительно улучшать пользовательский интерфейс, предоставляя удобный выбор вариаций блоков. Этот инструмент мощный и гибкий, он может расширяться в зависимости от потребностей, помогая создать динамичные и реагирующие дизайны.