WordPressのブロックエディタでブロックをあらかじめ配置しておきたい!

WordPressのカスタマイズ備忘録記事です

Vektorさんのフォーラム で見かけた気になるトピックや、自分でカスタマイズした際の手順やコードを備忘録としてまとめています。
参考にしたトピックやページは出来るかぎり記載するようにしていますので、合わせてご覧ください。問題がありましたらコメント欄かメールフォームへご一報ください。

こんにちは、ブロックエディタ大好き!はしづめです。
記事を書いているとき「このブロック毎回必ず使うから、自動で挿入されれば便利なのになあ……」なんて思ったことはありませんか? たとえば目次とか!
そんな時にぴったりなコードをVektorさんが書いてくださっていたのでご紹介します。

VK Blocksの目次を

あらかじめ配置する!

コピペ一発!コード

function my_insert_toc_template() {
    $post_type_object = get_post_type_object( 'post' );
    $post_type_object->template = [
		[ 'vk-blocks/table-of-contents-new', [
			'open' => 'open',
		]],
    ];
}
add_action( 'init', 'my_insert_toc_template' );

Vektor.inc フォーラム | 目次をデフォルトで表示させたい より

functions.phpに上記コードをコピペすると、投稿で新規追加をした際にあらかじめ目次ブロックが挿入されます。

 デフォルトの投稿タイプである「投稿」新規追加時に適用されるよ
 作成済みの記事に自動挿入されたりはしないよ
 functions.phpを編集する時は必ずバックアップを取っておこう!

ちょっと詳しく知りたい人向け!ざっくりコード解説

カスタム投稿タイプで使いたい場合や目次以外のブロックを挿入したい場合は上のコードを改変する必要があります。
PHPがよくわからない人でも改変が出来るように超初心者向けの、ものすごくざっくりカンタンな解説を入れてみました。

関数を宣言するよ!

function my_insert_toc_template() {
    $post_type_object = get_post_type_object( 'post' );
    $post_type_object->template = [
		[ 'vk-blocks/table-of-contents-new', [
			'open' => 'open',
		]],
    ];
}
add_action( 'init', 'my_insert_toc_template' );

1行目、ハイライト部の解説です。関数名my_insert_toc_templeteをつけて関数宣言をしています。
関数名は自分で決めることが出来ますが、他と被らないユニーク(一意)で、かつ処理の内容がわかりやすいものをつけるのが望ましいです。

PHP関数名の命名規則ざっくりまとめ

 大文字と小文字を区別しないよ
 使えるのは半角英数字とアンダーバー(_)だよ
 ハイフン(-)を使うとエラーになるよ
 一文字目に数字は使えないよ

厳密にいうとASCIIコードの0x7Fから0xFFまでの文字も使えるけど覚えなくても支障はないよ。

投稿タイプを指定するよ!

function my_insert_toc_template() {
    $post_type_object = get_post_type_object( 'post' );
    $post_type_object->template = [
		[ 'vk-blocks/table-of-contents-new', [
			'open' => 'open',
		]],
    ];
}
add_action( 'init', 'my_insert_toc_template' );

2行目で処理を適用させる投稿タイプを指定しています。他の投稿タイプに適用させたい場合は( 'post' )の部分を改変しましょう。
たとえば固定ページを指定する場合は( 'page' )になります。

関数の中身(実行する処理)を書いていくよ!

function my_insert_toc_template() {
    $post_type_object = get_post_type_object( 'post' );
    $post_type_object->template = [
		[ 'vk-blocks/table-of-contents-new', [
			'open' => 'open',
		]],
    ];
}
add_action( 'init', 'my_insert_toc_template' );

3-6行目、あらかじめ挿入しておきたいブロックをここで指定します。
記述方法はだいたい[ 'ブロック名', [ '設定項目' => '指定', ]],…みたいな感じになります。
このコードの場合は'vk-blocks/table-of-contents-new'でVK Blocksの目次ブロックを、'open' => 'open'で初期表示状態がOPENになるように指定しています。たとえばこの初期表示状態をCloseにしたい場合は'open' => 'close'と改変します。

細かい設定とかはいいからとりあえずブロックを配置したい!という場合は

$post_type_object->template = [
		[ 'vk-blocks/table-of-contents-new' ],
    ];

こんな感じでも書けるよ。

アクションフックで関数を実行するよ!

function my_insert_toc_template() {
    $post_type_object = get_post_type_object( 'post' );
    $post_type_object->template = [
		[ 'vk-blocks/table-of-contents-new', [
			'open' => 'open',
		]],
    ];
}
add_action( 'init', 'my_insert_toc_template' );

9行目、フックinitのタイミングで関数my_insert_toc_templateに書かれた処理を実行します――的な記述です。
宣言のところで関数名を変更した場合はこちらも合わせて必ず変更しましょう。

initってなに?

WordPressの代表的なアクションフックの一つで、現在ログイン中のユーザーの認証が終わった直後のタイミングで実行されるよ。

以上、だいたいざっくりこんな感じの内容のコードでした!

応用編:ついでに段落ブロックと見出しブロックも入れちゃおう!

function my_insert_blocks_template() {
    $post_type_object = get_post_type_object( 'post' );
    $post_type_object->template = [
		[ 'core/paragraph' ],		
		[ 'vk-blocks/table-of-contents-new', [
			'open' => 'close',
		]],
		[ 'core/heading', [
			'level' => '2',
		]],
		[ 'core/paragraph' ],
    ];
}
add_action( 'init', 'my_insert_blocks_template' );

デフォルトの投稿タイプpostの新規追加時に

  • 段落ブロックcore/paragraph
  • 閉じた目次ブロックvk-blocks/table-of-contents-new
  • H2見出しcore/heading
  • 段落ブロックcore/paragraph

をあらかじめ配置しておくコードがこちらです。ブロックを配置するひと手間がなくなるので、記事を書く効率が上がるかも?

こんなふうに自分好みにカスタマイズして、快適なWordPressライフをお送りください。

あわせて読みたい!

参考サイト一覧

わたしが書きました

はしづめ
はしづめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です