ブロックバリデーション innerBlocks、

block-customize.php

/**
 * ブロックバリデーション登録
 */
function gutenberg_tutorial_enqueue_block_editor(){
	// ビルド時に自動生成される情報を取得
	$assets_file = include plugin_dir_path(__FILE__ ) . "build/index.asset.php";
	wp_enqueue_script(
		"gutenberg-tutorial-script",
		plugin_dir_url(__FILE__ ) . 'build/index.js',
		$assets_file["dependencies"],
		// ビルド時に自動生成されるバージョン番号を使用する場合
		$assets_file["version"],
		true
	);
}

add_action( "enqueue_block_editor_assets", "gutenberg_tutorial_enqueue_block_editor" );

index.js

import "./variations";

variations.js

import { registerBlockVariation } from "@wordpress/blocks";
// registerBlockVariation()関数は、元のブロックの名前と、作成するバリエーションを定義するオブジェクトを受け入れ
// 第位置引数:拡張対象である元ブロックの名前
registerBlockVariation("core/media-text", {
	name: "media-text-custom",
	title: "Media & Text Custom",
	attributes: {
		align: "wide",
		backgroundColor: "Accent",
	},
	innerBlocks: [
		[
			"core/heading",
			{
				level: 3,
				placeholder: "Heading",
			},
		],
		[
			"core/paragraph",
			{
				placeholder: "Enter content here...",
			},
		],
	],
	isDefault: false,
});

registerBlockVariation("core/media-text", {
	name: "text-media",
	title: "Text & Media",
	attributes: {
		align: "wide",
		backgroundColor: "tertiary",
		mediaPosition: "right",
	},
	isActive: ["mediaPosition"],
});

参考