ブロックエディタには、ブロックを挿入・削除・並べ替えする機能があります。 決まったブロックを決まった順で使う、というような場合は、これらの機能を制限してみましょう。
Gutenbergのテンプレートロック機能
書籍で、ブロックテンプレート機能(初期配置機能)を取り上げました。初期配置機能と組み合わせると便利な機能として、テンプレートロック機能があります。 書籍では紙面の都合でテンプレートロック機能は割愛しましたが、代わりにここで紹介したいと思います。
テンプレートの操作
テンプレートロック機能の前に、テンプレートの操作としてどのような機能があるかを調べておきましょう。以下の機能があります。
- 挿入 : ブロックを追加する
- 編集 : ブロックを編集する
- 移動 : ブロックを並べ替える
- 削除 : ブロックを削除する
標準では、投稿時にこれらの機能を全て実行できるようになっています。
通常は全部の機能が使えると便利ですが、いつもそうとは限りません。 決まったブロックを決まった順で使う、というような場合もあるかもしれませんね。そういった場合に役立つのが、テンプレートロック機能です。
テンプレートロック機能の種類
WordPress5.2時点では、以下の2つがあります。
- all : 挿入・削除・移動を禁止する。編集のみ許可する。
- insert : 挿入・削除を禁止する。編集・移動は許可する。
カスタマイズ例は以下のようになります。
function php4wp_lock_template() {
$post_type_object = get_post_type_object( 'post' );
/*
ここで、ブロックの初期配置を行う。詳細は、第4版 p242~(第3版 p229~)
*/
// 挿入・削除・移動を禁止する。編集のみ許可する。
// $post_type_object->template_lock = "all";
// 挿入・削除を禁止する。編集・移動は許可する。
// $post_type_object->template_lock = "insert";
}
add_action( 'init', 'php4wp_lock_template' );
このように、ブロック操作に制限を加えておくと、ブロックを間違って消してしまう、といった操作ミスを防ぐことができます。
応用編: ユーザー権限により、操作を制限する
上のコード例は、全てのユーザーにテンプレートロック機能を適用していました。
WordPressの場合は、ユーザーの権限を分けられます。応用例として、「権限により、操作を制限する」をやってみましょう。
例:『管理者は全ての操作を許可する。管理者でないユーザーには挿入・削除・移動を禁止し、編集のみ許可する。』
function myplugin_register_template() {
$post_type_object = get_post_type_object( 'post' );
/*
ここで、ブロックの初期配置を行う。詳細は、第4版 p242~(第3版 p229~)
*/
// 管理者かどうかの判定
if (!current_user_can( 'manage_options' ) ) {
$post_type_object->template_lock = "all";
}
}
add_action( 'init', 'myplugin_register_template' );
管理者かどうかの判定には、current_user_can()
関数を使っています。current_user_can( 'manage_options' )
と指定すると、「オプションを操作できるユーザー=管理者権限のユーザー」となります。
こうしておけば、ブロックの追加・削除・移動は管理者だけが行えるようになります。
更新日: