はじめに
| スラッグ | 表示名 | 投稿作成 | 投稿公開 | 概要 |
|---|---|---|---|---|
| administrator | 管理者 | ● | ● | 全ての権限を持つ。サイト全体を管理できる。 |
| editor | 編集者 | ● | ● | 投稿や固定ページを全て管理(他ユーザーの投稿も編集可能)。 |
| author | 投稿者 | ● | ● | 自分の投稿のみ作成・編集・公開できる。 |
| contributor | 寄稿者 | ● | × | 自分の投稿のみ作成・編集できるが、公開権限はない。 また、一度投稿が公開されると、その投稿を編集できなくなる。 |
| subscriber | 購読者 | × | × | プロフィール編集やコメントなど最低限の権限のみ。 |
WordPressには、複数のユーザーロールがあり、それぞれ異なる権限が割り当てられています(表1参照)。
また、投稿の作成や公開ができるかどうかもロールによって異なります。
このように投稿権限が異なる中で、「編集者」や「投稿者」といった中間権限のユーザーに対して、Gutenbergブロックエディタで使用可能なブロックの種類を制限します。
この記事では、この方法について説明します。
実装手順
以下のコードをfunctions.phpに追加します。
add_filter('allowed_block_types_all', function ($allowed_blocks, $context) {
// 投稿編集画面以外は処理対象外
if (empty($context->post)) {
return $allowed_blocks;
}
// 現在のユーザー情報を取得
$current_user = wp_get_current_user();
// ロールごとの許可ブロックを設定
$role_allowed_blocks = [
'editor' => [
'core/paragraph', // 段落ブロック
'core/heading', // 見出しブロック
'core/image', // 画像ブロック
'core/list', // リストブロック
],
'author' => [
'core/paragraph', // 段落ブロック
'core/heading', // 見出しブロック
],
];
foreach ($current_user->roles as $role) {
if (isset($role_allowed_blocks[$role])) {
// ロールに応じた許可ブロックを返却
return $role_allowed_blocks[$role];
}
}
// 未定義のロールはデフォルトを返却
return $allowed_blocks;
}, 10, 2);
さいごに
今回紹介した方法を使えば、ユーザーロールごとにGutenbergブロックの使用制限を簡単に実装でき、サイトの編集権限を柔軟かつ安全に管理できます。
これにより、多人数での運用でもコンテンツの質やデザインの統一が保たれ、誤操作や不適切なブロック使用によるトラブルを未然に防ぐことが可能です。