Прежде чем начать, давайте разберемся что такое паттерны.
Паттерны представляют собой один или несколько настроенных блоков. Хранятся они в виде HTML внутри PHP кода. Паттерн подразумевает под собой многократное его использование на сайте. Если он будет использован всего один или два раза, то это уже и не паттерн вовсе.
Паттерны можно найти во вкладке паттернов, при создании страницы и/или поста:
По умолчанию доступно несколько видов — кнопки, столбцы, галерея, заголовки и текстовые блоки.
Выбираете необходимый и добавляете его в редактор. После добавления, паттерн уже никак не привязан к оригинальному шаблону паттерна. То есть, это самостоятельный набор блоков. Вы можете его изменять и он никуда не исчезнет, если вдруг оригинальный паттерн будет удален.
Паттерны можно создать как в самой теме, так и отдельным плагином.
Создание паттерна в Gutenberg
А теперь давайте попробуем создать свой паттерн.
Для этого мы будем использовать функцию register_block_pattern()
, подробнее о ней можете почитать в статье Block Patterns API.
Шаг 1 — копируем содержимое
Перед тем как начать, создайте необходимый набор блоков, или скопируйте настройки одного из кастомных блоков.
В примере я буду делать свою кнопку для проекта. Итак сперва добавим паттерн в редактор:
Далее скопируем его содержимое. Выделяем родительский блок и копируем:
Шаг 2 — регистрируем паттерн
Прежде чем использовать скопированное содержимое внутри функции register_block_pattern(), мы должны его очистить. То есть, код должен быть в одну строку и экранировать все кавычки. Можно это сделать вручную, или воспользоваться сервисом.
Дальше регистрируем наш паттерн. Используем хук init
и функция register_block_pattern()
Следующий код вы должны добавить в functions.php
вашей темы.
add_action( \'init\', \'astrolog_register_block_pattern\', 25 );
function astrolog_register_block_pattern() {
if ( class_exists( \'WP_Block_Patterns_Registry\' ) ) {
register_block_pattern(
\'astrolog/cta-pattern\',
array(
\'title\' => \'Кнопка CTA\',
\'description\' => \'Этот паттерн позволяет вам вставить кнопку на сайт.\',
\'content\' => \"<!-- wp:buttons --><div class=\"wp-block-buttons\"><!-- wp:button {\"borderRadius\":4,\"style\":{\"color\":{\"background\":\"#082853\",\"text\":\"#ffffff\"}}} -->
<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-text-color has-background\" style=\"border-radius:4px;background-color:#082853;color:#ffffff\">Записаться на сеанс</a></div><!-- /wp:button --></div><!-- /wp:buttons -->\",
\'categories\' => array( \'astrolog\' ),
)
);
}
}
Я изменила немного кнопки, а именно название и количество. По проекту, мне была нужна одна кнопка
Разберем, что есть что:
cta-pattern
— название паттернаtitle
— заголовокdescription
— описаниеcontent
— код нашего паттернаcategories
— категория паттерна. В примере она кастомная, но можно использовать и предустановленные (buttons, gallery, header, text, columns
).
А вот и сам результат:
Категории паттернов
Своя категория
У паттернов есть несколько предопределённых категорий, о которых я говорила ранее. Но мы можем зарегистрировать свою собственную категорию.
Для этого воспользуемся функцией register_block_pattern_category()
:
add_action( \'init\', \'astrolog_register_pattern_category\', 25 );
function astrolog_register_pattern_category() {
if ( class_exists( \'WP_Block_Patterns_Registry\' ) ) {
register_block_pattern_category(
\'astrolog\',
array( \'label\' => \'Astrolog\' )
);
}
}
Как вы наверное уже поняли, я зарегистрировала категорию под названием «astrolog».
Отключение категории
Все, что нужно для этого — это название категории, хук init
и функция unregister_block_pattern_category()
. Например:
add_action( \'init\', \'astrolog_unregister_pattern_category\', 25 );
function astrolog_unregister_pattern_category() {
if ( class_exists( \'WP_Block_Patterns_Registry\' ) ) {
unregister_block_pattern_category( \'buttons\' ); // Кнопки
}
}
Здесь я отключила категорию «Кнопки». Вы можете отключить любую ненужную категорию или же их все.
Отключение паттернов
Если же паттерны вам не нужны, они отвлекают вас и раздражают, то вы можете их отключить:
Отключение всех паттернов
remove_theme_support( \’core-block-patterns\’ );
Отключение определенных паттернов
add_action( \'init\', \'astrolog_unregister_pattern\', 25 );
function astrolog_unregister_pattern() {
if ( class_exists( \'WP_Block_Patterns_Registry\' ) ) {
unregister_block_pattern( \'astrolog/cta-pattern\' );
}
}
В данном примере отменяется регистрация паттернов с именем cta-pattern
, который я использовала для регистрации блока с кнопкой.
По сути, чтобы отключить какой-либо паттерн, вам просто нужно знать его название.
Вот и все