TOPWordPressGutenbergGutenbergの初期値を変数に(管理画面から変更等)したい時の注意点Gutenbergの初期値を変数に(管理画面から変更等)したい時の注意点これは少し特殊な使い方になるのかな?私のサイトで配布しているGutebergに対応済みのプラグインには、ブロックを新規追加した際のパラメータ(初期値)を管理画面で予め設定変更できる物があります。この機能をプラグインに盛り込もうと考えた際に気をつけるべきこと。失敗したことを、この記事にまとめておきます。今回紹介する機能を盛り込もうと考えた場合、attributesのdefaultを変数にしてあげれば簡単に実装することが出来ます。値をその都度変更すれば想定した機能を搭載できそうです。思わぬ落とし穴しかし思わぬところで落とし穴が...。弄ってみたら予期せぬ動作をするじゃないですか。管理画面で初期値を変更したら、既に追加されている記事中のブロックまでattribute値が連動して変更される状態に。}}上記のcolor値を設定し。以下の3色に変更できるとします。redblueyellowそして管理画面にて初期値redを指定し。記事内にredを含んだブロックを複数追加しました。その後、新しく追加するブロックの初期値はblueが良いかな?と考え、管理画面から初期値をbuleに変更すると・・・。全てcolorの値がredからbuleへと一括変更されてしまいました。記事内に追加されているブロックのcolor値は影響を受けず今後新規追加するブロックだけblueになるのが望んだ動作のはず。追加したブロックまで影響を受けるのか?attributesのdefault値は初期値なのだからブロックを追加した後は、もう影響を受けないのが正常な動作のはず。考えて原因を探ってみると、Gutenbergのブロックのパラメータ保存方法に問題がありました。Gutenbergはブロック内で選んだパラメーターを全てコメントとして保存する仕組みです。パラメータ値を保存するのですが、ここで一つの落とし穴。attributesでdefault値として設定された値と、選択した値が一致する時、コメント欄に値は保存されない。いう仕様となっています。-->1行目のコメント部分に違いがあります。エラーが発生する原因つまりdefault値を使って初期値変更を行っている場合。管理画面でdefault値を変えると、saveの値とdefault値の値が変わり。出力内容に齟齬が生じるためエラーが発生していたんですね。-->class="red"の部分がclass="blue"となるのです。この現象をストップさせるためには全てのパラメータを新規ブロック追加時にコメント欄に残る仕様にする。attributesのdefault値を使わないで初期値を設定する仕組みにすれば良いという事です。-->colorの設定情報が内部で常に存在していれば問題ないという事です。逆を言えば、余計な値をコメント欄に残したくない場合はattributesのdefault値を積極的に使えばスッキリすると言うことです。初期値変更を行いたい値は全てattributesのdefaultを使わずに指定する必要があるため、edit()の部分で新規追加時の時のみ値を挿入する仕組みにしてあげましょう。設け、editで対応する方法です。内の処理が実行されるため、ここで初期値を設定する方法ですね。初期値をobjectなどで渡してあげると4行で済みます。やり方はあると思うのですが、今回の記事では割愛します。あなたの好きな方法で実装すると良いでしょう。おわりに今回説明した方法ですが、Gutenbergの新規ブロック追加時に初期値を設定したい。いう機能を必要とする人はどれだけ居るのだろうか・・・?少しマニアックな記事となっておりますが、attributesのdefalut値の動作。コメント内部で保存される挙動は知らないと、ひょんな事からエラーを誘発するので頭の片隅にでも覚えておくと良いでしょう。役に立ったらみんなにシェアしようツイートシェアはてなPocketこの記事のタイトルとURLをコピーする下のテキストボックスの内容がコピーされました。今すぐSNSなどに「貼り付け」してみてください。スマホは「ロングタップ(長押し)」すると貼り付けられます。お使いの端末ではこの機能に対応していません。下のテキストボックスからコピーしてください。する記事はありません。当サイトの記事装飾は全てWPのオリジナルプラグインで行ってます。