Gutenberg でブロックを作る際に登場する attribute とは、一言で言うとブロック内で保持される『データ』のことです。段落ブロックであれば段落内の文章、画像ブロックであれば画像のURLやリンク先URLなどをさします。
そしてブロックを開発する際に attributes
オブジェクトと言うものを作る必要があります。名前からも分かる通り上述の attribute に関連するものです。これは一体なんでしょうか? この記事では attributes
オブジェクトについて見ていきたいと思います。
まず知っておかなくてはならないのは、Gutenberg のブロックは最終的にはHTMLとして保存されるということです。当たり前といえば当たり前ですが、これはとても重要です。例えば以下は画像ブロックの例です。
<!-- wp:image --> <figure class="wp-block-image"> <a href="https://hysryt.com/linkurl"> <img src="https://hysryt.com/ebi.jpg" alt=""/> </a> </figure> <!-- /wp:image -->
これを Gutenberg エディタで開いた場面を想像してください。この画面では保存されたHTMLがブロックとして表示される必要があります。これはHTMLをそのまま表示すればいいというわけではありません。閲覧者がブラウザで表示するのとは違い、投稿者として修正できる状態でなければならないからです。
エディタ画面でのブロックの出力は edit
関数が担っています。であれば保存されたHTMLをそのまま edit
関数に渡せば修正可能なブロックを出力してくれるかというと、そうはいきません。edit
関数はデータを加工してブロックを出力するという処理のみ行うからです。
ここでいうデータとは、上の例でいう画像のURLや、画像をクリックした時のリンク先URLなどことです。
つまり edit
関数を呼び出すには、HTMLからそういったデータを抽出するという処理を行う必要があります。この抽出処理に必要になるのが attributes
オブジェクトです。
以下は画像ブロックの attributes
の中の、画像URLについての部分です。
url: { type: 'string', source: 'attribute', selector: 'img', attribute: 'src', },
type
は抽出データのデータ型、source
はデータの抽出場所の分類、selector
と attribute
はデータの抽出場所を示しています。つまり言い換えると、「データは属性値から取得する。取得場所は <img>
の src
属性で、string
型として取得し、url
と言う attribute に格納する」ということになります。
このように attributes
オブジェクトは、データ(attribute)の取得方法を定義するためのオブジェクトです。Gutenberg のブロックを動かす上でとても重要な役割を持っています。