WooCommerce は最近、ベータ機能として「High-Performance Order Storage」[HPOS] を導入しました。これを有効化すると、WooCommerce の注文データを以下の名前の専用データベーステーブルに保存できます。
- _wc_orders
- _wc_orders_meta
- _wc_order_addresses
- _wc_order_operational_data
- _wc_order_coupon_lookup
- _wc_order_product_lookup
- _wc_order_stats
- _wc_order_tax_lookup
- wp_woocommerce_order_items
- wp_woocommerce_order_itemmeta
このガイドでは、この機能を活用して、Staging サイトをライブサイトにプッシュした際に、Staging サイトの注文がライブサイトの注文を上書きしないようにする方法を解説します。以下の手順で進めてください。
Contents
ライブと Staging の両方のサイトで HPOS を有効化する
注意: HPOS は活発に開発中で、まだ進化の途上にあります。詳しい手順は、WooCommerce 公式の HPOS の記事をご覧ください。
(WooCommerce > Settings > Advanced > Features)に移動し、Staging サイトとライブサイトの両方で、このスクリーンショットのように「High-performance order storage」のチェックボックスを選択してください。あわせて「Enable compatibility mode」もチェックされていることを確認してください。

この手順の後、WooCommerce は通常の _posts テーブルから新しい _wc_orders テーブルへ注文の同期を開始します。同期が完了するまで数分待つ必要がある場合があります。
繰り返しになりますが、これらの手順はライブと Staging の両方のサイトで必ず行ってください。
プッシュ処理中に WooCommerce 注文テーブルを除外する
Staging サイトをライブサイトにプッシュする際に、これらのテーブルを除外できるようになります。

これにより、push 後もライブサイトの WooCommerce の注文はそのまま残り、Staging サイトの注文で置き換えられることはありません。
重複決済を防ぐ: ActionScheduler テーブルの除外
WooCommerce Subscriptions やその他のスケジュールタスクを利用している WooCommerce サイトをプッシュまたは移行する際は、移行先サイトで重複アクション(定期決済など)が発生するリスクがあります。
これらのアクションが二重に発火するのを防ぐため、移行 / プッシュ処理から ActionScheduler テーブルを必ず除外してください。
{prefix}_actionscheduler_actions{prefix}_actionscheduler_logs{prefix}_actionscheduler_claims{prefix}_actionscheduler_groups
注意: {prefix}_ は、ご利用の Staging サイトのデータベース接頭辞に置き換えてください。
このスクリーンショットのとおりです。
