WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

register_block_type() WP 5.0.0

Регистрирует новый тип блока для редактора блоков (Гутенберг).

Для корректной регистрации блока поле $name должно быть идентичным в php функции register_block_type( 'alias/example', [] ) и js функции registerBlockType( 'alias/example', {} )

Хуков нет.

Возвращает

WP_Block_Type/false. Объект зарегистрированного блока в случае успеха или false в случае ошибки.

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

register_block_type( $name, $args );
$name(строка/WP_Block_Type) (обязательный)
Имя типа блока, включая пространство имен или полный экземпляр WP_Block_Type. Параметр $args не нужен, когда указан экземпляр WP_Block_Type (он будет проигнорирован).
$args(массив)

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

  • $render_callback(callable)
    Функция обратного вызова, используемая для отображения контента блока. Принимает параметры $attributes и $content

По умолчанию: array()

Примеры

#1 Зарегистрируем новый тип блока без дополнительных параметров

add_action( 'init', 'gutenberg_block_register_block' );
// Регистрируем новый тип бока
function gutenberg_block_register_block() {
	register_block_type( 'gutenberg-block/example', [] );
}

add_action( 'enqueue_block_editor_assets', 'gutenberg_block_editor_scripts' );
// Регистрируем основной скрипт для блока
function gutenberg_block_editor_scripts() {
	wp_register_script(
		'example',
		plugins_url( 'build/index.js', __FILE__ ),
		['wp-blocks']
	);

	wp_enqueue_script( 'example' );
}

#2 Зарегистрируем новый тип блока с дополнительными параметрами

Пример показывает как регистрировать блок в контексте класса. Блок бдует выводить записи.

new Gutenberg_Block_Example(); // инициализация

class Gutenberg_Block_Example {

	public function __construct() {
		add_action( 'init', [ $this, 'gutenberg_block_register_block' ] );
		add_action( 'enqueue_block_editor_assets', [ $this, 'gutenberg_block_editor_scripts' ] );
	}

	public function gutenberg_block_register_block() {
		register_block_type( 'gutenberg-block/example', [
			'attributes'      => [
				'postsPerPage' => [
					'type'    => 'number',
					'default' => 3,
				],
				'order'        => [
					'type'    => 'string',
					'default' => 'desc',
				],
			],
			'render_callback' => [ $this, 'gutenberg_block_render_callback' ]
		] );
	}

	public function gutenberg_block_editor_scripts() {
		wp_register_script(
			'example',
			plugins_url( 'build/index.js', __FILE__ ),
			['wp-blocks']
		);

		wp_enqueue_script( 'example' );

	}

	public function gutenberg_block_render_callback( $attributes, $content ) {

		$args = [
			'posts_per_page' => $attributes['postsPerPage'],
			'post_status'    => 'publish',
			'order'          => $attributes['order'],
		];

		$posts = get_posts( $args );

		$html = '<div>';

		if ( $posts ) {
			$html .= '<ul>';

			foreach ( $posts as $item ) {
				$html .= '<li><a href="' . get_the_permalink( $item->ID ) . '">' . $item->post_title . '</a></li>';
			}

			$html .= '</ul>';
		} else {
			$html .= '<h3>' . __( 'No posts!', 'gutenberg-blocks' ) . '</h3>';
		}

		$html .= '</div>';

		return $html;

	}

}

Список изменений

С версии 5.0.0 Введена.

Код register_block_type() WP 5.5.1

wp-includes/blocks.php
<?php
function register_block_type( $name, $args = array() ) {
	return WP_Block_Type_Registry::get_instance()->register( $name, $args );
}

Cвязанные функции

Из метки: Gutenberg (редактор блоков Гутенберг блоки blocks)

Glum 697
Редакторы: Kama 7835
1 коммент