目次
ブロック設定で値を表示ui
ホームページ ウェブフロントエンド CSSチュートリアル ブロックエディターのカスタムWordPressブロックの設定を保存する

ブロックエディターのカスタムWordPressブロックの設定を保存する

Mar 09, 2025 pm 01:05 PM

Saving Settings for a Custom WordPress Block in the Block Editor

この一連のチュートリアルでは多くの作業が行われました!外部APIからデータを取得し、フロントエンドでレンダリングするカスタムWordPressブロックを作成しました。次に、WordPressブロックエディターでデータを直接レンダリングできるように、作業を拡張しました。その後、WordPress InspectorControlsパッケージのコンポーネントを使用して、そのブロックの設定UIを作成しました。

最後のステップは、設定オプションを保存することです。前の投稿の内容を思い出した場合、実際にブロック設定UIで選択を「保存」することができましたが、これらの選択は実際にはどこにも保存されていませんでした。いくつかの選択を行う場合は、それらを保存してから投稿に戻ると、設定が完全​​にリセットされます。

ループを閉じて、これらの設定を保存して、次にカスタムブロックを含む投稿を編集するときに持続できるようにしましょう!

WordPressブロックで外部APIを使用して

  • フロントエンドのレンダリングデータ
  • バックエンドのレンダリングデータ
  • カスタム設定ui
  • を作成します
  • カスタムブロック設定を保存(こちら!)
  • リアルタイムAPIデータの使用
  • (近日公開)
  • 設定プロパティを保存

フットボールチームのランキングを提供するAPIを使用しています。これは、国、リーグ、シーズンに基づいてランキングディスプレイを取得するために使用しています。以下に示すように、各プロパティの新しいプロパティを作成できます。

次に、leaguesettings.jsからプロパティを設定する必要があります。設定UIのコンボボックスコントロールが更新されたときはいつでも、

メソッドを使用してプロパティを設定する必要があります。これは、1つのデータエンドポイントのみを使用する場合、より簡単です。しかし、今では複数の入力がありますが、もう少し複雑です。
// index.js

attributes: {
  data: {
    type: "object",
  },
  settings: {
    type: "object",
    default: {
      country: {
        type: "string",
      },
      league: {
        type: "string",
      },
      season: {
        type: "string",
      },
    },
  },
},
ログイン後にコピー
ログイン後にコピー

これが私がそれを整理する方法です。 leaguesettings.jsに新しいオブジェクトを作成し、プロパティの設定構造とその値に従います。 setAttributes()

また、初期状態変数をnullから対応する設定変数に変更しました。

// LeagueSettings.js

let localSettings = {
  country: attributes.settings.country,
  league: attributes.settings.league,
  season: attributes.settings.season,
};
ログイン後にコピー
ログイン後にコピー

では、拡張オペレーターを使用してクローン化されたパラメーターを使用して
// LeagueSettings.js

const [country, setCountry] = useState(attributes.settings.country);
const [league, setLeague] = useState(attributes.settings.league);
const [season, setSeason] = useState(attributes.settings.season);
ログイン後にコピー
を作成し、以前の

オブジェクトを新しい国、リーグ、シーズンの値で上書きします。 handle______Change() setLocalAttributes() localSettingsこのように定義できます:

// LeagueSettings.js

function handleCountryChange(value) {
  // 初始代码
  setLocalAttributes({ ...localSettings, country: value });
  // 代码的其余部分
}

function handleLeagueChange(value) {
  // 初始代码
  setLocalAttributes({ ...localSettings, league: value });
  // 代码的其余部分
}

function handleSeasonChange(value) {
  // 初始代码
  setLocalAttributes({ ...localSettings, season: value });
  // 代码的其余部分
}
ログイン後にコピー
したがって、

setLocalAttributes()を使用して、2つのオブジェクトをマージします。次に、新しい選択が行われ、変更が発生するたびに各設定プロパティを考慮する必要があるため、

オブジェクトを
// LeagueSettings.js

function setLocalAttributes(value) {
  let newSettings = Object.assign(localSettings, value);
  localSettings = { ...newSettings };
  setAttributes({ settings: localSettings });
}
ログイン後にコピー
に戻すことができます。

Object.assign()最後に、通常どおりnewSettingsを使用して最終オブジェクトを設定できます。 UIの選択を更新することにより、上記の属性が変更されているかどうかを確認できます。 localSettings

確認する別の方法は、devtoolsで

を実行してプロパティを見つけることです。 setAttributes()

そのスクリーンショットを注意深く見てください。これらの値はattributes.settingsに保存されます。 useState()フックのおかげで、設定を変更するたびに再レンダーを反応するため、リアルタイムで発生することがわかります。

ブロック設定で値を表示ui

コントロールオプション自体に設定値を保存することは、各コントロールが他の設定値に依存するため、あまり有用ではありません(たとえば、リーグによるランキングは選択されたシーズンに依存します)。しかし、設定値が静的であり、互いに独立している場合は非常に便利です。

現在の設定を複雑にすることなく、設定パネルに別のセクションを作成して、現在のプロパティを表示できます。独自の方法を選択して設定値を表示できますが、

パッケージからチップコンポーネントをインポートします:@wordpress/components

// index.js

attributes: {
  data: {
    type: "object",
  },
  settings: {
    type: "object",
    default: {
      country: {
        type: "string",
      },
      league: {
        type: "string",
      },
      season: {
        type: "string",
      },
    },
  },
},
ログイン後にコピー
ログイン後にコピー
ここで、先端コンポーネントに表示する前に条件付きで値を確認します:

// LeagueSettings.js

let localSettings = {
  country: attributes.settings.country,
  league: attributes.settings.league,
  season: attributes.settings.season,
};
ログイン後にコピー
ログイン後にコピー
これはブロックエディターでの動作です:

リアルタイムデータを毎回手動で更新せずに表示できる場合、

APIデータはより強力です。このシリーズの次の部分でこれを探ります。

以上がブロックエディターのカスタムWordPressブロックの設定を保存するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

静的フォームプロバイダーの比較 静的フォームプロバイダーの比較 Apr 16, 2025 am 11:20 AM

ここでは、「静的フォームプロバイダー」という用語を埋めてみましょう。あなたはあなたのHTMLを持ってきます

SASSをより速くするための概念の証明 SASSをより速くするための概念の証明 Apr 16, 2025 am 10:38 AM

新しいプロジェクトの開始時に、SASSコンピレーションは瞬く間に起こります。これは、特にbrowsersyncとペアになっている場合は素晴らしい気分です。

毎週のプラットフォームニュース:HTMLロード属性、主なARIA仕様、およびIFRAMEからShadowDOMへの移動 毎週のプラットフォームニュース:HTMLロード属性、主なARIA仕様、およびIFRAMEからShadowDOMへの移動 Apr 17, 2025 am 10:55 AM

今週のプラットフォームニュースのラウンドアップで、Chromeは、Web開発者のロード、アクセシビリティ仕様、およびBBCの動きのための新しい属性を導入します

HTMLダイアログ要素を使用したいくつかの実践 HTMLダイアログ要素を使用したいくつかの実践 Apr 16, 2025 am 11:33 AM

これは私が初めてHTML要素を見ていることです。私はしばらくの間それを知っていましたが、まだスピンしていませんでした。かなりクールです

ペーパーフォーム ペーパーフォーム Apr 16, 2025 am 11:24 AM

購入またはビルドは、テクノロジーの古典的な議論です。自分で物を構築することは、あなたのクレジットカードの請求書にはラインアイテムがないため、安価に感じるかもしれませんが

「ポッドキャストにサブスクライブ」リンクはどこにすべきですか? 「ポッドキャストにサブスクライブ」リンクはどこにすべきですか? Apr 16, 2025 pm 12:04 PM

しばらくの間、iTunesはポッドキャストの大きな犬だったので、「ポッドキャストにサブスクライブ」をリンクした場合:

それはすべて頭の中にあります:Reactヘルメットを使用してReact Poweredサイトのドキュメントヘッドを管理する それはすべて頭の中にあります:Reactヘルメットを使用してReact Poweredサイトのドキュメントヘッドを管理する Apr 15, 2025 am 11:01 AM

ドキュメントヘッドはウェブサイトの中で最も魅力的な部分ではないかもしれませんが、それに入るものは間違いなくあなたのウェブサイトの成功にとってそれと同じくらい重要です

独自の非JavaScriptベースの分析をホストするためのオプション 独自の非JavaScriptベースの分析をホストするためのオプション Apr 15, 2025 am 11:09 AM

サイトの訪問者と使用データを追跡するのに役立つ分析プラットフォームがたくさんあります。おそらく、特にGoogleアナリティクスが広く使用されています

See all articles