2022-08-30/2023-05-23

記事作成時にデフォルトのブロックを表示する方法

記事作成時にデフォルトのブロックを表示する方法

投稿やカスタム投稿を使用している場合の記事作成時に特定のブロックをあらかじめ表示しておく方法を紹介します。

似た機能として再利用可能ブロックをテンプレートのように利用する方法もありますし、カスタムフィールドを利用する方法もあります。今回利用する方法と見比べながら都合の良い物を選択してください。

デフォルトブロックの作成

今回は例なので「投稿」にテンプレートを作成していきます。

テンプレートを作成するのは簡単でフックを利用することで作成可能です。

下記は「タイトル」と「段落」をデフォルトで表示する方法です。

function register_post_template() {
$post_type_object = get_post_type_object( 'post' );
$post_type_object->template = [
[
'core/heading',
[
'placeholder' => 'タイトル1',
'textColor' => 'vivid-cyan-blue',
]
],
[
'core/paragraph',
[
'placeholder' => '内容1',
]
],
];
}
add_action( 'init', 'register_post_template' );

$post_type_objectは「WP_Post_Type」クラスのオブジェクトです。このオブジェクトは投稿タイプのプロパティやタクソノミーとの紐づけを管理しているクラスです。その$post_type_objectの「template」プロパティをフックで上書きしている形です。

配列でブロック名とそのブロックの設定を設定することができます。

上の例では「core/heading」は見出し(levelが指定されていない場合はH2)、そのplaceholderをタイトル1に変更し、文字色を水色に設定しています。「core/paragraph」は段落です。通常は「ブロックを選択するには「/」を入力」と表示されるplaceholderを「内容1」に変更しています。

ロック

テンプレートはロックできるようになっており、作成したテンプレート以外挿入できないようにしたりすることが可能です。テンプレートそのもののロックとブロックごとのロックを行うことができます。

テンプレートのロック

先程の「WP_Post_Type」の「template_lock」プロパティを指定することでロックをすることができます。

function register_post_template() {
$post_type_object = get_post_type_object( 'post' );
$post_type_object->template = [
[
'core/heading',
[
'placeholder' => 'タイトル1',
'textColor' => 'vivid-cyan-blue',
]
],
[
'core/paragraph',
[
'placeholder' => '内容1',
]
],
];
$post_type_object->template_lock = 'all';
}
add_action( 'init', 'register_post_template' );

「template_lock」に指定できるのは以下です。

  • all・・・テンプレート内のすべてのブロックをブロック自体のロック(後述)し、新しいブロックの挿入を不可にする。
  • insert・・・テンプレート内のすべてのブロックをブロック自体のロック(後述)し、新しいブロックの挿入を不可にする。ただし、移動は可能。

ブロック自体のロック

ブロック自体のロックでは移動のロックと削除のロックをかけることが可能です。

先のテンプレートロックの「all」では両方、「insert」では削除のロックのみがかけられています。

ブロックのオプションで「lock」を指定することで、ブロック自体のロックをすることができます。

function register_post_template() {
$post_type_object = get_post_type_object( 'post' );
$post_type_object->template = [
[
'core/heading',
[
'placeholder' => 'タイトル1',
'textColor' => 'vivid-cyan-blue',
'lock' => [
'move' => true,
'remove' => true
],
]
],
[
'core/paragraph',
[
'placeholder' => '内容1',
]
],
];
}
add_action( 'init', 'register_post_template' );
  • move・・・移動のロック。
  • remove・・・削除のロック。

まとめ

以上デフォルトのブロックを表示する方法の紹介でした。意外と簡単ではないでしょうか。

ブロックの名前がわからない時は「コードエディタ―」に一時的に変更することでブロック名を確認することができます。WordPressデフォルトのブロックには「core」を忘れずにつけて下さい。その他プラグインやテーマのブロックには独自の「○○/」となっているはずです。

投稿では使い道が少ないかもしれませんが、カスタム投稿など使用している場合はかなり有効的に使えると思います。お客さん側の手間を少なくする、ライターさんの手間を少なくするといった場合に使用を検討してみてください。

2020 KumaTechLab.