Автор: Stasyuk Eugene 58 Мітки: , , 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 поля для редагування:

Інші статті

Спливаюче вікно на сайті (попап, модальне вікно) pop-up window

Спливаюче вікно на сайті (попап, модальне вікно)

Спливаюче вікно на сайті (попап, модальне вікно)

Коли я тільки освоював ази розробки, спливаюче вікно я робив вручну. Так, так – замість того, щоб знайти якесь готове рішення, я займався цією невдячною справою 🤪. Мені здавалося, що особливо нічого складного в цьому немає. Але, тільки через якийсь час роботи над цим питанням, я почав усвідомлювати, що зробити це не так вже й […]

Діапазон дат у WP_Query – виведення постів за meta_query wordpress

Діапазон дат у WP_Query – виведення постів за meta_query

Діапазон дат у WP_Query – виведення постів за meta_query

Клас WP_Query – це один з інструментів WordPress, який допомагає вивести пости за необхідними параметрами: категорії, сортування, діапазон дат тощо. Список параметрів досить пристойний. Детальніше з ними в документації можна ознайомитися тут: https://developer.wordpress.org/reference/classes/wp_query/ . Деякі параметри досить великі й іноді куди простіше розібратися в них, коли є готові приклади. І у мене якраз такий є. […]