Автор: Stasyuk Eugene 101 Метки: , , 27.12.2023

Gutenberg — уже довольно долго используется в WordPress в качестве основного текстового редактора. Я, наверное, как и большинство разработчиков не особо горел желанием его использовать. Тем более, что в качестве альтернативы можно было загрузить плагин Classic Editor и дальше пользоваться старым редактором. Но, по мере использования Gutenberg, я увидел большое количество его преимуществ и таким образом плавно остановился на нем. Об одном из таких преимуществ мы сегодня и поговорим.

Acf блок в Gutenberg

Одно из интересных преимуществ Gutenberg — это возможность создавать свои собственные блоки. Однако, проблема заключается в том, что это не тривиальный процесс. Он требует определенный уровень опыта для разработчика. Acf плагин в свою очередь упрощает данную процедуру. Функционал доступен с версии ACF version 5.8.0 и состоит он из трех шагов:

1) Регистрация блока

Для этого мы в файле functions.php используем функцию acf_register_block($args). В качестве аргументов используем массив с набором настроек. Подробный список параметров можно посмотреть здесь. В параметре render_callback указываем название функции, которая будет отображать блок на странице. Далее оборачиваем данный код в callback функцию и используем ее в хуке ‘acf/init’. В моем случае итоговый код будет выглядеть вот так:

add_action('acf/init', 'acf_gutenberg_blocks_init');
function acf_gutenberg_blocks_init() {

	// check function exists
	if( function_exists('acf_register_block') ) {

		acf_register_block(array(
			'name'              => 'list-with-icons',
			'title'             => 'List with icons',
			'render_callback'   => 'acf_blocks_render_callback',
			'category'          => 'formatting',
			'icon'              => 'editor-ul',
		));
	}
}

2) Создаем Field Group

Заходим в админпанель и создаем новую группу полей:

В созданной группе можно использовать любые виды полей. В моем случае это Repeater, где мы можем добавлять пункты с описанием и иконкой.

Чтобы данная группа полей была отображена в опциях Gutenberg, необходимо в блоке Settigs во вкладке Location Rules в первом select выбрать опцию Block, а в третьем select — зарегистрированный в functions.php название зарегистрированного блока:

3) Отображение блока

Когда мы ранее регистрировали блок, в параметре render_callback, мы указали такое название функции: acf_blocks_render_callback. Настало время ею воспользоваться. Текущая функция имеет имеет переменную $block. С её помощью мы зададим название шаблона и укажем место его расположения.

function acf_blocks_render_callback( $block ) {

	$slug = str_replace('acf/', '', $block['name']);

	if( file_exists( get_theme_file_path("/template-parts/block/content-{$slug}.php") ) ) {
		include( get_theme_file_path("/template-parts/block/content-{$slug}.php") );
	}
}

А это будет содержимое файла content-list-with-icons.php:

<?php
/**
* Block Name: List with icons
*/

$list = get_field('editor__list_with_icons');

if(empty($list)) return; ?>

<ul class="list-with-icon">
    <?php
    foreach ($list as $item): ?>

        <li>
            <?php
            if(!empty($item['icon'])) echo '<span>' . wp_get_attachment_image($item['icon']) . '</span>';
            if(!empty($item['text'])) echo '<span>' . $item['text'] . '</span>';
            ?>
        </li>

    <?php
    endforeach; ?>
</ul>

Наш блок готов. Осталось воспользоваться им в текстовом редакторе.

Использование блока

На редактируемой странице открываем sidebar в левом верхнем углу. В этом списке мы уже можем увидеть созданный нами блок.

Перетаскиваем его в контентную область, кликаем на него и нажимаем на иконку редактирования, после чего нам будут доступны acf поля для редактирования:

Другие статьи

DOMSubtreeModified — событие при изменении элемента action

DOMSubtreeModified — событие при изменении элемента

DOMSubtreeModified — событие при изменении элемента

Краткая предыстория Был у меня в работе сайт, в котором формы были настроены на плагине Contact Form 7. Сами же эти формы были интегрированы с Mailchimp. Задача состояла в следующем: после того, как пользователь заполнит и отправит определенную форму, сообщение должно попадать в сервис с определенным тегом (теги Mailchimp — это самый простой способ организовать […]

Wp Favs — менеджер плагинов для WordPress

Wp Favs — менеджер плагинов для WordPress

Wp Favs — менеджер плагинов для WordPress

Когда ты на регулярной основе создаешь шаблоны для WordPress, то сталкиваешься с одним рутинным моментом, который отнимает у тебя часть времени — загрузка и активация плагинов. Довольно успешно эту проблему решает плагин WP Favs. Вы просто создаете список плагинов, который вы регулярно используете, и потом скопом загружаете его к себе на сайт. Процесс работы с […]