Gutenbergカスタムブロックその1

Gutenbergのカスタムブロックを制作します。
まずは、第1回ということでシンプルなものを。

カスタムブロックはプラグインという形で実装します。

pluginディレクトリに専用のフォルダを好きな名前で用意してください。(今回の場合はgutenberg-custom-block-sample01)

プラグインフォルダ内のphpファイルのコードです。(gutenberg-custom-block-sample01.php)

<?php
/*
Plugin Name: Gutenberg Custom Block Sample01
Plugin URI:
Description:
Version: 1.0.0
Author: ETERNITY DESIGN
Author URI: https://eternitydesign.net/
*/

defined( 'ABSPATH' ) || exit;


function gutenberg_sample01_register_block() {

	if(!function_exists( 'register_block_type' ) ) {
		// Gutenbergがアクティブでない場合
		return;
	}

	// block.jsをロードするように
	wp_register_script(
		'gutenberg-custom-block-sample01',
		plugins_url('block.js', __FILE__),
		array('wp-blocks', 'wp-element'),
		filemtime( plugin_dir_path( __FILE__ ) . 'block.js')
	);

	// カスタムブロックの登録
	register_block_type('ed-gutenberg-samples/sample01', array(
		'script' => 'gutenberg-custom-block-sample01',
	));

}
add_action('init', 'gutenberg_sample01_register_block');

?>

次にblock.jsというファイルを同じディレクトリに用意します。

(function( blocks, element ) {

	var el = element.createElement;

	var blockStyle = {
		backgroundColor: '#900',
		color: '#fff',
		padding: '18px',
	};

	blocks.registerBlockType('ed-gutenberg-samples/sample01', {
		title: 'gutenberg_sample01_register_block',

		// https://developer.wordpress.org/resource/dashicons/#tagcloud
		icon: 'universal-access-alt',

		// common, formatting, layout, widgets, embed
		category: 'layout',
		edit: function() {
			return el(
				'p',
				{ style: blockStyle },
				'gutenberg Custom Block Sample 01'
			);
		},
		save: function() {
			return el(
				'p',
				{ style: blockStyle },
				'gutenberg Custom Block Sample 01'
			);
		},
	} );
}(
	window.wp.blocks,
	window.wp.element
));

プラグインを有効化し、ブロックを追加してみてください。
gutenberg Custom Block Sample 01という固定テキストを追加するだけのカスタムブロックができました。

今回のサンプルはこちらのサンプルをシンプルに改変したものになります。