「WordPressユーザーのためのPHP入門はじめから、ていねいに。」第三版で書ききれなかったネタです。
※書籍でのgutenbergの解説読了が前提となります。
WordPressでは新規投稿時にブロックを配置した状態にすることができます。書籍ではP229あたりに書いた内容です。
ブロックテンプレートには画像や段落のブロックの他、(書籍では書ききれなかった)カラム(段組)を置くことができます。この場合は、下記のようにコードを書きます。
function my_custompost_init() {
$args = [
(.. 省略 ..)
'template' => [
[ 'core/columns', ['columns' => 3], [
[ 'core/column', [], [
[ 'core/image', [] ],
] ],
[ 'core/column', [], [
[ 'core/image', [] ],
] ],
[ 'core/column', [], [
[ 'core/image', [] ],
] ],
] ],
],
];
register_post_type( 'book', $args );
}
add_action( 'init', 'my_custompost_init' );
↑はカスタム投稿タイプを作る場合の例です。register_post_type()の引数に、templateというオプションがあるので、このtemplateに、gutenbergブロックの情報を配列で渡せばOKです。
カラム(core/columns)を初期データとして設置すれば、新規投稿時に段組した状態で書き始められます。このページの一番上の画像のようになります。
配列が深い階層になっていますが、↑のコードをテンプレート的に利用してもらえれば楽に設置できると思います。
WordPress標準では、ブロックは投稿者が追加したり並べ替えたりできます。自由度が高い設計ですが、投稿ごとの書式を統一させたいなどで、ブロックの追加・並べ替えを制限したい場合もあるでしょう。その場合には、
'template_lock' => 'all',
と記述すれば、ブロック追加・並べ替えを不可に設定できます。
また、
'template_lock' => 'insert',
と記述すれば、ブロック追加は不許可、並べ替えは許可、に設定できます。
※gutenberg自体が新しい仕組みで、開発が活発に行われているため、この辺りの仕様は将来変更される可能性があります。