WooCommerce 9.7: よりスマートな配送表示と高速なパフォーマンス

WooCommerce 9.7がアップデートされました。開発者ブログ「WooCommerce 9.7: Smarter shipping displays and faster performance」の翻訳です。

新しい配送方法の表示

カートとチェックアウトブロックの配送方法に説明と配送時間を追加 #49643

拡張機能開発者が各配送方法の説明と配送時間を定義できるように、チェックアウトブロックの配送方法選択インターフェイスを改良しました。WC_Shipping_Rate のデータに、delivery_time と description という 2 つの新しいプロパティを追加しました。

delivery_time と description の値は、配送オプションセレクターとカートブロックサイドバーに表示されます。サイドバーでは、スペースを節約するために、delivery_time の値のみが表示されます。

配送オプションセレクターの新しいプロパティ

計算機付きカートブロックサイドバービュー

この新しい機能を活用するには、woocommerce_package_ratesフィルターを使用する必要があります。以下の例をご覧ください。

add_filter( 'woocommerce_package_rates', function ( $rates, $package ) {
    foreach ( $rates as $rate_id => $rate ) {
        if ( 'flat_rate' === $rate->method_id ) {
            $rate->description = 'This is a custom description for ' . $rate->label . '.';
            $rate->delivery_time = 'This will be delivered in 1 day.';
        }
        if ( 'free_shipping' === $rate->method_id ) {
            $rate->description = 'This is a custom description for ' . $rate->label . '.';
            $rate->delivery_time = 'This will be delivered in 3 days.';
        }
    }
    return $rates;
}, 10, 2 );

ブロックエディターのパフォーマンスが高速化

商品ブロック登録システム、特に registerProductBlockType 関数 (以前は registerBlockSingleProductTemplate と呼ばれていました) の大幅なリファクタリングが完了しました。この関数は、単一商品テンプレートの商品関連ブロックのブロック登録を処理するため、非常に重要です。また、商品コレクションブロック、単一商品ブロックなどの商品固有のブロックの祖先制約を使用して、投稿/ページ エディターでもブロックを利用できるようにします。

最も大きな効果のある改善点の 1 つはパフォーマンスです。ブロックごとに個別のストア サブスクリプションを維持する代わりに、新しい実装ではそれらを 1 つのサブスクリプションに統合し、オーバーヘッドを大幅に削減します。リファクタリングされたシステムでは、単一商品テンプレートと商品関連ブロックを操作する際のサブスクリプション コールバックが 99% 削減され、実行時間が 75% 短縮されます。ベンチマークでは、劇的な改善が見られました:

  • 以前の実装 (registerBlockSingleProductTemplate)
    • サイトエディターで単一製品テンプレートを最初に読み込むと、4,550 件のサブスクリプションコールバックがトリガーされました
    • 合計実行時間: 2.47 秒
  • 新しい実装 (registerProductBlockType)
    • 同じテストでサブスクリプションコールバックは 24 件のみ
    • 合計実行時間: 0.63 秒

さらに、以前の実装ではコールバックの登録を解除しなかったため、サイト エディターの操作中に実行オーバーヘッドが持続していました。この問題は解決され、パフォーマンスと効率の両方が向上しました。

オプション付きカートに追加ブロックの強化

オプション付きカートに追加: ステッパーオプションを追加 #48876

単一商品テンプレートの一部である「オプション付きカートに追加」ブロックに、数量選択用の洗練されたステッパーレイアウトが追加されました。ブロックの数量セレクター設定からこの新しいレイアウトオプションを有効にして、エンドカスタマーにさらに合理化された購入エクスペリエンスを提供できるようになりました。

新しい機能を試すには、サイトエディター > テンプレート > 単一商品テンプレート > 「オプション付きカートに追加」ブロックに移動します。「オプション付きカートに追加」ブロックの「数量セレクタ」オプションで、ステッパーレイアウトと従来のレイアウトのどちらかを選択できるようになりました。

さらなる新機能とアップデート

強化された商品バリエーション API

WooCommerce REST API は、商品バリエーションのフィルタリング機能をさらに強化しました。開発者は新しいパラメータを使用して、ステータス (include_status、exclude_status)、仮想ステータス (virtual)、ダウンロード可能ステータス (downloadable) でバリエーションをフィルタリングできるため、より正確で効率的な商品クエリが可能になります。

すべての商品バリエーションを一覧表示するエンドポイントは、より詳細な商品フィルタリングを可能にするいくつかの新しいパラメータをサポートするようになりました 👇

商品ステータス管理

  • include_status: 特定のステータス値を持つ商品バリエーションを含めます。
  • exclude_status: 特定のステータス値を持つ商品バリエーションを除外します。

商品機能

  • downloadable: ダウンロード可能かどうかに基づいて商品バリエーションをフィルタリングします。
  • virtual: 仮想かどうかに基づいて商品バリエーションをフィルタリングします。

よりスマートなストア通知処理

ブロックテーマに切り替えるときにストア通知を無効にする #54288

ストア通知機能は、ブロックテーマに切り替えると自動的に無効になり、クラシックテーマに切り替えると、以前に有効になっていた場合に限り自動的に有効になります。

この機能はカスタマイザー (/wp-admin/customize.php) からのみアクセスでき、ブロックテーマユーザーにとって混乱の原因となっていました。詳細を読む 👇

ブロックテーマではサイトエディター UI から簡単に管理できなかったため、これを無効にするには、クラシックテーマに戻すか、URL を介してカスタマイザーに直接アクセスする必要がありました。

つまり、これにより、ブロックテーマに切り替えるとストア通知が自動的に無効になり、クラシックテーマに戻すと復元され、マーチャントにとってシームレスなエクスペリエンスが維持されます。

初めての提示内容

以下に、まだベータ版であるか、部分的にしか展開されていない機能を示します。これらの機能をテストし、フィードバックを共有して、より良い商品の構築にご協力ください。

最新の支払い設定

最新の支払い設定ページの改善を継続して展開しています。WooCommerce 9.7 では、新しい React ベースの支払い設定インターフェースが導入され、最初は新規ストアの 50% に展開されます。この最新化の取り組みの詳細については、技術発表の投稿をご覧ください。

このリリースには、支払い設定ページの外観と操作性の更新と、「公式」バッジの導入が含まれています。このバッジは、サービスプロバイダーと WooCommerce のコラボレーションで開発された拡張機能を強調表示し、セキュリティ、パフォーマンス、互換性、ユーザーエクスペリエンス、プライバシーに関するマーケットプレイスのガイドラインに準拠していることを保証します。このバッジのない拡張機能は独自の開発およびサポートプラクティスに従う場合がありますが、すべての支払いソリューションは WooCommerce 内で引き続き歓迎され、マーチャントはニーズに最適なものを選択できます。

この機能を有効または無効にしたい場合は、 reactify-classic-payments-settings フラグに true または false の値を渡すことができます。以下の例を参照して、機能を強制的に有効にしてください 👇

add_filter( 'woocommerce_admin_get_feature_config', function( $features ) {
    return array_merge(
        $features,
        [
            'reactify-classic-payments-settings' => true,
        ]
    );
}, 999 );

最新のメールスタイル (ベータ版)

WooCommerce のメールエクスペリエンスを最新のものにするための作業を継続する中で、このリリースではユーザーおよび注文関連のメールの機能強化が導入されています。皆様のご意見をぜひお聞かせください。ディスカッションに参加して、フィードバックをこちらで共有してください。

実験的な機能を有効にするには、WooCommerce > 設定 > 詳細 > 機能に移動し、メールの改善をオンにします。

このバージョンで追加された機能を確認してください 👇
メールのプレビューがこれまで以上に正確になりました。 よりモダンな外観と雰囲気が加わっただけでなく、メールのプレビューにはより多くのデータが含まれるようになり、ストアのオーナーやサイト管理者はメールの受信者が目にするものをよりよく視覚化できるようになりました。

ユーザー関連のメールのプレビュー (新しいアカウントとパスワードのリセット)

  • より明確にするためにユーザー名が含まれるようになりました。

注文関連のメールのプレビュー (該当する場合)

  • 透明性を高めるために支払い方法が追加されました。
  • 割引の詳細が表示されます。
  • 商品のバリエーション情報が含まれます。
  • 顧客のメモが表示されるようになりました。
  • 配送方法が明確に指定されています。

API の更新

REST API

  • [REST API] 注文管理時の商品在庫処理の改善 #53618
  • 商品タイプ定数の導入 #53759
  • 商品バリエーションエンドポイントのリストにダウンロード可能パラメータを追加 #54242
  • 商品ステータス定数の導入 #53938
  • 商品バリエーションエンドポイントに仮想パラメータを追加 #54245
  • 商品バリエーションエンドポイントに新しい include_status および exclude_status フィルターを追加 #54246
  • エッジケースのカートおよびチェックアウトページ検出ロジックを修正 #54340
  • クラスがロードされていないため、REST API の ProductStatus 定数を元に戻します #54418
  • 支払い方法からのエラーメッセージを受け入れるか、失敗のみの通知を変換します #53671

Store API

  • 可変商品の在庫インジケーターの可視性を修正 #54156
  • addItemToCart サンクを拡張 #53458
  • カートデータストア: カートが空の場合にカート API への不要なリクエストを防止します (ミニカートブロック用) #53611

その他の重要な情報

開発者向けアドバイス

プレリリース版のリリースに向けて準備を進めており、開発者向けアドバイスがいくつか予定されています。詳細は今後の投稿でお知らせします。

🧹 コンポーネント パッケージのクリーンアップ: @woocommerce/components パッケージから、使用されなくなった実験的な商品エディターコンポーネントをいくつか削除しました。__experimental プレフィックスが付いた従来の実験的なコンポーネント (WooProductFieldItem、WooProductSectionItem、WooProductTabItem、ProductSectionLayout、ProductFieldSection) を使用している拡張機能開発者は、コードを更新してこれらの依存関係を削除する必要があります。詳細はこちらをご覧ください。

🔄 REST API での一貫した在庫管理: 注文管理時に、REST API の在庫動作を WP Admin 機能と一致させました。API 経由で明細項目を変更すると、在庫レベルが自動的に調整されるようになりましたが、処理中、保留中、または完了ステータスの注文のみ対象となります。この変更により、さまざまなインターフェース間で在庫管理の一貫性が向上します。

セキュリティアップデート

不正アクセスを防止するため、マルチサイトネットワークでの顧客データの処理方法を変更しました。

以前は、マルチサイトネットワーク内の通常のサイト管理者は、特定の REST API エンドポイントまたは注文エディターの顧客検索機能を介して、他のサイトの顧客データにアクセスできました。これは、単一のチームによって管理されるネットワークでは問題にならないかもしれませんが、サイトが異なるエンティティによって運営されている場合はリスクがあります。

何が変わりますか?

既存の WooCommerce サイトの場合、現在の動作は変更されません。

新しく作成された WooCommerce サイトでは、より厳格なセキュリティ モデルが採用され、サイト間の顧客データアクセスが manage_network_users 機能を持つユーザーに制限されます。

この更新により、マルチサイト環境でのデータプライバシーが向上し、さまざまなユースケースに柔軟に対応できるようになります。