Gutenberg reusable blocks WordPress: полное руководство по созданию и использованию
Что такое reusable‑блоки Gutenberg и зачем они нужны?
Reusable blocks (переиспользуемые блоки) – это отдельные блоки контента, которые сохраняются в библиотеке и могут быть вставлены в любые записи или страницы. При изменении содержимого в одном месте все места, где блок использован, обновляются автоматически. Это экономит время разработки и гарантирует консистентность дизайна.
Как создать reusable‑блок в WordPress
Создание блока занимает несколько кликов:
- Откройте любой пост/страницу в редакторе Gutenberg.
- Соберите нужный набор блоков (заголовок, изображение, список и т.д.).
- Выделите их, нажмите кнопку «Три точки» → Convert to reusable block.
- Задайте понятное название, например «CTA – подписка на рассылку», и сохраните.
После этого блок появится в разделе Reusable в боковой панели.
Синхронизация и глобальное редактирование
Если вам нужно изменить блок программно (например, добавить динамический PHP‑контент), используйте функцию register_block_type и получайте содержимое через WP_Block_Type_Registry. Ниже пример, как вывести reusable‑блок по его ID и добавить к нему кастомный класс.
'mytheme_render_reusable_wrapper',
] );
} );
function mytheme_render_reusable_wrapper( $attributes ) {
// ID переиспользуемого блока хранится в атрибуте "ref".
$block_id = $attributes['ref'] ?? 0;
if ( ! $block_id ) {
return '';
}
// Получаем HTML исходного блока.
$block_content = get_post_field( 'post_content', $block_id );
// Добавляем кастомный класс для стилизации.
$class = $attributes['className'] ?? 'my-reusable';
return sprintf( ' ‘, esc_attr( $class ), $block_content ); } ?>
Такой подход позволяет хранить контент в редакторе, а выводить его через PHP‑шаблоны, что особенно удобно при работе с кешированием (Redis vs Memcached).
Лучшие практики организации reusable‑блоков
Чтобы библиотека блоков не превратилась в хаос, соблюдайте несколько правил:
- Единый префикс названий. Например,
CTA –илиFooter –. Это упрощает поиск. - Категоризация. Используйте плагины типа Block Library или добавьте метки через
post_meta(см. удаление category и tag из URL для чистых permalinks). - Не храните бизнес‑логику. Блоки – только представление. Для динамики используйте PHP‑рендеринг или REST‑эндпоинты.
- Регулярный аудит. Периодически проверяйте, какие блоки не используются, и удаляйте их.
Примеры реального применения
Рассмотрим три типовых сценария, где reusable‑блоки экономят время.
1. Баннеры акций
Создайте один блок с изображением, заголовком и кнопкой «Подробнее». Вставьте его в 30 страниц. При изменении даты акции достаточно отредактировать блок один раз.
2. FAQ‑разделы
Соберите список вопросов в отдельный блок и используйте его в разных продуктах. При добавлении нового вопроса блок обновится везде.
3. Подключение аналитики
Если требуется добавить скрипт отслеживания в каждый пост, создайте блок HTML с кодом скрипта и вставляйте его через reusable‑блок. При смене провайдера аналитики меняете один блок.
Для более продвинутой интеграции с базой данных можно воспользоваться безопасными WPDB‑запросами (прямые запросы к БД).
Отладка и миграция
При переносе сайта убедитесь, что в базе присутствует таблица wp_posts с типом wp_block. При миграции из HTTP в HTTPS (миграция HTTP→HTTPS) замените ссылки внутри блоков с помощью wp search-replace или плагина Better Search Replace.
Для ускорения загрузки страниц, особенно если reusable‑блоки содержат изображения, рассмотрите конвертацию их в форматы AVIF/WebP (AVIF vs WebP).
Следуя этим рекомендациям, вы сможете построить гибкую систему контент‑модулей, которая сократит время разработки и повысит консистентность сайта.
❓ Часто задаваемые вопросы
Можно ли импортировать готовый reusable‑блок из другого сайта?
Да. Экспортируйте блок как отдельный JSON‑файл через плагин Export/Import Blocks, затем импортируйте на целевом сайте. Все ссылки и стили сохранятся.
Как удалить reusable‑блок без потери контента на страницах?
При удалении блок превращается в обычный набор блоков, поэтому контент останется. Однако рекомендуется сначала заменить блок на его статическую копию.
Влияет ли кеширование на обновление reusable‑блоков?
Да, если вы используете объектный кэш (Redis, Memcached), необходимо сбрасывать кеш при изменении блока. Это можно автоматизировать через хук save_post_wp_block.
Можно ли использовать reusable‑блоки в шаблонах PHP без Gutenberg?
Конечно. Функция do_blocks() позволяет отрендерить содержимое блока по его ID, а также можно воспользоваться get_post_field('post_content') как в примере выше.