エディターマークアップ
useBlockProps()
フックは、@wordpress/block-editor
パッケージによって提供され、Edit
コンポーネント内のブロックの外部マークアップを定義するために使用されます。
このフックは、いくつかのタスクを簡素化します。
- ブロックの HTML 構造に一意の
id
を割り当てること。 - 機能と情報を向上させるためのさまざまなアクセシビリティおよび
data-
属性を追加すること。 - ブロックのカスタム設定を反映するクラスとインラインスタイルを組み込むこと。デフォルトでは、これには次のものが含まれます:
- 一般的なブロックスタイリングのための
wp-block
クラス。 - ブロックの名前空間と名前を組み合わせたブロック固有のクラスで、ユニークでターゲットを絞ったスタイリング機能を保証します。
- 一般的なブロックスタイリングのための
次の例では、Edit
コンポーネント内で useBlockProps()
フックを使用してブロックのエディターマークアップが定義されています。
const Edit = () => <p { ...useBlockProps() }>Hello World - Block Editor</p>;
registerBlockType( ..., {
edit: Edit
} );
ブロックエディタ内のブロックのマークアップは、クラスと属性が自動的に適用されるため、次のようになります:
<p
tabindex="0"
id="block-4462939a-b918-44bb-9b7c-35a0db5ab8fe"
role="document"
aria-label="Block: Minimal Gutenberg Block ca6eda"
data-block="4462939a-b918-44bb-9b7c-35a0db5ab8fe"
data-type="block-development-examples/minimal-block-ca6eda"
data-title="Minimal Gutenberg Block ca6eda"
class="
block-editor-block-list__block
wp-block
is-selected
wp-block-block-development-examples-minimal-block-ca6eda
"
>Hello World - Block Editor</p>
ブロックの Edit
コンポーネント内では、useBlockProps()
フックを使用して、追加のクラスと属性を引数として渡すことで含めます。(例を参照)
supports
プロパティを使用して機能を有効にすると、useBlockProps
によって返されるオブジェクトに対応するクラスや属性が自動的に含まれます。
保存マークアップ
データベースにマークアップを保存する際は、useBlockProps.save()
によって返されるプロパティをブロックのラッパー要素に追加することが重要です。useBlockProps.save()
は、ブロッククラス名がブロックサポート API によって注入された HTML 属性に加えて正しくレンダリングされることを保証します。
クライアントでブロックを登録する次のコードを考えてみてください。ブロックを編集する際に使用されるマークアップと、ブロックがデータベースに保存される際に使用されるマークアップがどのように定義されているかに注目してください。
const Edit = () => <p { ...useBlockProps() }>Hello World - Block Editor</p>;
const save = () => <p { ...useBlockProps.save() }>Hello World - Frontend</p>;
registerBlockType( ..., {
edit: Edit,
save,
} );
フロントエンドのブロックのマークアップは、クラスが自動的に適用されるため、次のようになります:
<p class="wp-block-block-development-examples-minimal-block-ca6eda">Hello World – Frontend</p>
ブロックの save
関数に追加のクラスや属性を追加したい場合は、それらを useBlockProps.save()
の引数として渡す必要があります。(例を参照)
supports
を任意の機能に追加すると、適切なクラスが useBlockProps.save()
フックによって返されるオブジェクトに追加されます。以下の例では、段落ブロックにテキストと背景色のクラスが追加されています。
<p class="
wp-block-block-development-examples-block-supports-6aa4dd
has-accent-4-color
has-contrast-background-color
has-text-color
has-background
">Hello World</p>
この HTML を生成した 例のブロック は、ブロック開発の例 リポジトリで入手できます。
動的レンダーマークアップ
動的ブロックでは、フロントエンドのマークアップがサーバー側でレンダリングされるため、get_block_wrapper_attributes()
関数を利用して、必要なクラスと属性を出力できます。これは、save
関数内で useBlockProps.save()
を使用するのと同様です。(例を参照)
<p <?php echo get_block_wrapper_attributes(); ?>>
<?php esc_html_e( 'Block with Dynamic Rendering – hello!!!', 'block-development-examples' ); ?>
</p>