バッチ処理
このパッケージは、最終的に @wordpress/batch-processing
パッケージになる可能性のある最初のバージョンを含んでいます。インポートされると、core/__experimental-batch-processing
ストアが登録されます。名前が示すように、これは非常に実験的であり、現時点ではプライベートAPIと見なされています。
インストール
モジュールをインストールします
npm install @wordpress/edit-widgets
このパッケージは、あなたのコードが ES2015+ 環境で実行されることを前提としています。そのような言語機能やAPIのサポートが限られているか、まったくない環境を使用している場合は、コードに @wordpress/babel-preset-default
に同梱されているポリフィル を含める必要があります。
これがどのように機能するか
WordPress管理の新しいウィジェット画面は、投稿エディタや実験的なサイトエディタと同様に、別のブロックエディタです。したがって、ウィジェットエディタと呼ばれることがよくあります。
このエディタはウィジェットエリアを管理し、通常のウィジェットに加えてGutenbergブロックを追加する方法を提供します。ウィジェットとブロックの両方をサポートするために、エディタはウィジェットストレージとブロック文法の間の翻訳メカニズムを使用します。
ウィジェットデータのブロックUIとして機能するウィジェットブロックがあります。このブロックは、選択可能なすべての利用可能なウィジェットのリストでデフォルトでインスタンス化されます。ブロックは、選択されたウィジェットに基づいて、編集モードとプレビューの2つのモードでその機能をラップします。ウィジェットブロックの編集モードは標準のウィジェットフォームを表示し、プレビューはウィジェットのサーバーサイドレンダリングを行います。
ウィジェットエリアに追加されたブロックのストレージメカニズムとして機能するブロックウィジェットがあります。このウィジェットはHTMLウィジェットの特別なケースであり、ブロックデータはブロックの保存機能によってレンダリングされるとおりに保存されます。ウィジェットエリアに追加されたすべてのブロックは、これらの特別なHTMLウィジェットとして保存され、1種類のウィジェット、ブロックウィジェットに格納されます。
ウィジェットをブロックとして編集するためのウィジェットブロックと、ウィジェットとしてブロックを保存するためのブロックウィジェットを使用するこのメカニズムは、古いウィジェット画面との100%の互換性を保証します。したがって、ブロックベースの新しいウィジェットエディタが、管理ページのHTML構造やjQueryイベントに依存する一部のウィジェットの機能を壊す場合、古い画面に戻ってレガシーウィジェットの編集を続けることが容易です。
単なるブロックエディタであるウィジェットエディタは、REST APIエンティティ管理エンドポイントを必要とします。サポートのために、2つの新しいエンドポイントが追加されました: ./widgets と /sidebars。./widgets エンドポイントはウィジェットを読み込み、保存し、ウィジェットの編集フォームのサーバーサイドレンダリングを取得するために使用されます。/sidebars エンドポイントはウィジェットエリアをリストし、ウィジェットをウィジェットエリアに割り当てたり、削除したりするために使用されます。また、どのような種類のウィジェットが利用可能かをリストする /widget-types エンドポイントもあります。例えば、テキストウィジェット、カレンダーウィジェットなどです。
ユーザーにとってできるだけシームレスな体験を提供するために、ウィジェットエディタでは次の「マジック」が発生します:
- 利用可能なすべてのウィジェットに対して、ユーザーが必要なものの正確な名前で見ることができ、検索できるようにウィジェットブロックのバリエーションが登録されます。
- ブロックに相当するウィジェット(同じ機能を果たすブロック)を持つすべてのウィジェットは、フィルターを介してウィジェットブロックのバリエーションとして利用できなくすることができます。
- ブロックに相当するすべてのコアウィジェットは、ウィジェットブロックのバリエーションとして利用できません。
このパッケージへの貢献
これはGutenbergプロジェクトの一部である個別のパッケージです。このプロジェクトはモノレポとして整理されています。特定の目的を持つ複数の自己完結型ソフトウェアパッケージで構成されています。このモノレポ内のパッケージは、npm に公開され、WordPress や他のソフトウェアプロジェクトで使用されています。
このパッケージやGutenberg全体への貢献について詳しく知りたい場合は、プロジェクトの主要な貢献者ガイドをお読みください。