kmaroff
5/23/2019 - 8:39 PM

ACF Gutenberg Block

<?php
// Регистрация ACF Block
function acf_register_blocks() {
	// Блок 1
	if( ! function_exists( 'acf_register_block_type' ) )
		return;
	acf_register_block_type( array(
		'name'				=> 'block-hidden',
		'title'				=> __('Скрывающийся блок'),
		'description'		=> __(''),
		'render_template'	=> 'template-parts/blocks/block-hidden.php',
		'category'		=> 'common',
		'icon'			=> 'hidden',
	));

  // Блок 2
	if( ! function_exists( 'acf_register_block_type' ) )
		return;
	acf_register_block_type( array(
		'name'				=> 'block-how-to-work',
		'title'				=> __('Этапы работы'),
		'description'		=> __(''),
		'render_template'	=> 'template-parts/blocks/how-to-work.php',
		'category'		=> 'common',
		'icon'			=> 'hidden',
	));

}
add_action('acf/init', 'acf_register_blocks' );

// title (строка): отображается в редакторе как метка блока с возможностью поиска
// description (необязательная строка): описывает назначение блока
// icon (необязательный элемент Dashicon или JSX): значок, связанный с блоком
// category (строка): где блок появляется в диалоговом окне Add blocks
// keywords (необязательный массив): до трех ключевых слов, используемых при поиске блоков
// attributes (необязательный объект): обрабатывает данные динамического блока
// edit (функция): функция, которая возвращает разметку для отображения в редакторе
// save (function): функция, которая возвращает разметку, которая будет отображаться на внешнем интерфейсе
// useOnce (необязательный логический): запретить добавление блока более одного раза
// support (необязательный объект): определяет поддерживаемые блоком функции

// Варианты параметра "category":
// common
// formatting
// layout
// widgets
// embed

// Вызываемый код для блока в случае с render_callback
function my_testimonial_block_html() {
	
	// vars
	$testimonial = get_field('testimonial');
	$author = get_field('author');
	$avatar = get_field('avatar');
	
	?>
	<blockquote class="testimonial">
	    <p><?php echo $testimonial; ?></p>
	    <cite>
	    	<img src="<?php echo $avatar['url']; ?>" alt="<?php echo $avatar['alt']; ?>" />
	    	<span><?php echo $author; ?></span>
	    </cite>
	</blockquote>
	<?php
}
<?php
//Альтернативный вариант
if( function_exists('acf_register_block') ) {
	
	$result = acf_register_block(array(
		'name'				=> 'testimonial',
		'title'				=> __('Testimonial'),
		'description'		=> __('A custom testimonial block.'),
		'render_callback'	=> 'my_testimonial_block_html', // Если вызываем исполняемый код через function.php
		'render_template'   => 'template-parts/blocks/testimonial/testimonial.php', //Если вызываем исполняемый код из файла. Рекомендуется.
		//'category'		=> '',
		//'icon'			=> '',
		//'keywords'		=> array(),
	));
}