WordPressのブロックエディタからブロックロック機能やコードエディター表示などを使用できないように制限する方法を見ていきます。ユーザーの権限によって許可する機能を限定してみます。
block_editor_settings_all フィルターフック
ユーザーがブロックエディタの各機能を使用できないように制限をかけるためには、block_editor_settings_allというフィルターフックを使用します。
block_editor_settings_all
apply_filters(
'block_editor_settings_all',
array $editor_settings,
WP_Block_Editor_Context $block_editor_context
)
すべてのエディター タイプのブロック エディターに渡す設定をフィルター
$editor_settings
エディターの構成可能な設定の配列
$block_editor_context
WP_Block_Editor_Contextのインスタンスで、現在のエディターに関する情報を含むオブジェクト
指定したエディター機能を使用できないようにする例。
function custom_block_my_block_editor_settings_all($editor_settings, $block_editor_context) {
$editor_settings['canLockBlocks'] = false; // ブロックロック機能を無効化
$editor_settings['codeEditingEnabled'] = false; // コードエディターを無効化
$editor_settings['richEditingEnabled'] = false; // ビジュアルエディターを無効化
$settings['blockInspectorTabs'] = array( 'default' => false ); // ブロックインスペクターを無効化
$settings['imageDefaultSize'] = 'medium'; // デフォルトの画像サイズを指定
$editor_settings['maxUploadFileSize'] = 12345; // 最大アップロードファイルサイズを変更
$settings['fontLibraryEnabled'] = false; // フォトライブラリーを無効化
$settings['enableOpenverseMediaCategory'] = false; // Openverseを無効化
$editor_settings['disableCustomColors'] = true; // カスタムカラーパレットを無効化
$editor_settings['disableCustomFontSizes'] = true; // カスタムフォントサイズ無効化
$editor_settings['disableCustomSpacingSizes'] = true; // padding,marginの数値入力を無効化
return $editor_settings;
}
add_filter('block_editor_settings_all', 'custom_block_my_block_editor_settings_all', 10, 2);
ユーザーの権限によって、エディター機能を制限する。例えば、コードエディターを使用できるのは管理者のみとする指定方法
function custom_block_dojo_block_editor_settings_all($editor_settings, $block_editor_context) {
// 管理者以外
if (! current_user_can('administrator')) {
$editor_settings['codeEditingEnabled'] = false; //コードエディターを無効化
}
return $editor_settings;
}
add_filter('block_editor_settings_all', 'custom_block_dojo_block_editor_settings_all', 10, 2);
権限の指定方法の例
// 管理者以外
if (! current_user_can('administrator')) {
// add code
}
// プラグインを有効化できないユーザー (管理者)
$can_active_plugins = current_user_can('activate_plugins');
if (! $can_active_plugins) {
// add code
}
Editor settingsを一覧で表示する
WordPressのエディターを表示し、コンソールに次のコマンドを入力すると、現在の設定を確認できる。
wp.data.select( 'core/block-editor' ).getSettings()
コードエディター(codeEditingEnabled)がfalseになっていることを確認できる。

参考
- https://developer.wordpress.org/reference/hooks/block_editor_settings_all/
- https://developer.wordpress.org/block-editor/reference-guides/filters/editor-filters/
- フィルターフックで設定変更できるEditor settingsの例と一覧の確認方法
- https://ja.wordpress.org/team/handbook/block-editor/how-to-guides/curating-the-editor-experience/filters-and-hooks/ (日本語)