ブロックオプションの制限

ユーザーに対してブロックへのアクセスをまったく許可したくない場合があります。インサーターで利用可能なものを制御するために、リストにあるブロック以外のすべてのブロックを無効にする許可リストまたは特定のブロックを登録解除する拒否リストの2つのアプローチを取ることができます。

パターンディレクトリの無効化

WordPressコアにバンドルされたパターンがインサーターでアクセスされないように完全に削除するには、次の内容をfunctions.phpファイルに追加できます:

  1. function example_theme_support() {
  2. remove_theme_support( 'core-block-patterns' );
  3. }
  4. add_action( 'after_setup_theme', 'example_theme_support' );

ブロックのバリエーションを無効化

一部のコアブロックは実際にはブロックのバリエーションです。良い例は、実際にはグループブロックのバリエーションである行ブロックとスタックブロックです。これらの「ブロック」を無効にしたい場合は、実際にはそれぞれのバリエーションを無効にする必要があります。

ブロックのバリエーションはJavaScriptを使用して登録され、JavaScriptで無効にする必要があります。以下のコードは行のバリエーションを無効にします。

  1. wp.domReady( () => {
  2. wp.blocks.unregisterBlockVariation( 'core/group', 'group-row' );
  3. });

コードがテーマフォルダーのルートにあるdisable-variations.jsファイルに配置されていると仮定すると、以下のコードを使用してテーマのfunctions.phpでこのファイルをエンキューできます。

  1. function example_disable_variations_script() {
  2. wp_enqueue_script(
  3. 'example-disable-variations-script',
  4. get_template_directory_uri() . '/disable-variations.js',
  5. array( 'wp-dom-ready' ),
  6. wp_get_theme()->get( 'Version' ),
  7. true
  8. );
  9. }
  10. add_action( 'enqueue_block_editor_assets', 'example_disable_variations_script' );

ブロックスタイルの無効化

いくつかのコアブロックには独自のブロックスタイルが含まれています。例として、丸い画像用のブロックスタイル「Rounded」を含む画像ブロックがあります。ユーザーに画像を丸めさせたくない場合や、ブロックスタイルの代わりにボーダー半径コントロールを使用したい場合があります。いずれにせよ、不要なブロックスタイルを無効にするのは簡単です。

ブロックのバリエーションとは異なり、スタイルはJavaScriptまたはPHPのいずれかで登録できます。スタイルがJavaScriptで登録されている場合は、JavaScriptで無効にする必要があります。PHPを使用して登録された場合、スタイルはどちらでも無効にできます。すべてのコアブロックスタイルはJavaScriptで登録されています。

したがって、画像ブロックの「Rounded」ブロックスタイルを無効にするには、以下のコードを使用します。

  1. wp.domReady( () => {
  2. wp.blocks.unregisterBlockStyle( 'core/image', 'rounded' );
  3. });

このJavaScriptは、上記のブロックバリエーションの例と同様にエンキューされるべきです。PHPを使用してスタイルを登録および登録解除する方法については、ブロックスタイルのドキュメントを参照してください。

テンプレートエディタへのアクセスを無効化

ClassicテーマまたはBlockテーマでtheme.jsonを使用している場合、投稿やページを編集する際に利用可能なテンプレートエディタへのアクセスを削除するために、次の内容をfunctions.phpファイルに追加できます:

  1. function example_theme_support() {
  2. remove_theme_support( 'block-templates');
  3. }
  4. add_action( 'after_setup_theme', 'example_theme_support' );

これにより、新しいブロックテンプレートを作成したり、投稿エディタ内からそれらを編集したりする能力が防止されます。

コードエディタへのアクセスを無効化

コードエディタを使用すると、ページや投稿の基礎となるブロックマークアップを表示できます。このビューは経験豊富なユーザーには便利ですが、コンテンツを編集することでブロックマークアップを誤って壊す可能性があります。アクセスを制限するために、次の内容をfunctions.phpファイルに追加してください。

  1. function example_restrict_code_editor_access( $settings, $context ) {
  2. $settings[ 'codeEditingEnabled' ] = false;
  3. return $settings;
  4. }
  5. add_filter( 'block_editor_settings_all', 'example_restrict_code_editor_access', 10, 2 );

このコードは、すべてのユーザーがコードエディタにアクセスするのを防ぎます。特定のユーザーのアクセスを無効にするために権限チェックを追加することもできます。

RichTextブロックのフォーマットオプションを無効化

RichTextをサポートするブロックは、WordPressによって提供されるデフォルトのフォーマットオプションを備えています。

フォーマットオプションは、unregisterFormatTypeを使用してJavaScriptで無効にする必要があります。以下のコードは、インライン画像、言語、キーボード入力、下付き文字、および上付き文字オプションをグローバルに無効にします。

  1. wp.domReady( () => {
  2. wp.richText.unregisterFormatType( 'core/image' );
  3. wp.richText.unregisterFormatType( 'core/language' );
  4. wp.richText.unregisterFormatType( 'core/keyboard' );
  5. wp.richText.unregisterFormatType( 'core/subscript' );
  6. wp.richText.unregisterFormatType( 'core/superscript' );
  7. });

このJavaScriptは、上記のブロックバリエーションの例と同様にエンキューされるべきです。