開発者に引き渡す前に Staging サイトからすべての WooCommerce 注文とそのデータを削除したい場合は、次の 2 つのアプローチのいずれかに従えます:
Staging サイトで SQL スクリプトを実行する
Staging サイトで以下の SQL スクリプトを実行すると、WooCommerce の注文とそのメタデータも削除されます
DELETE wpstg0_posts, wpstg0_postmeta, wpstg0_woocommerce_order_items, wpstg0_woocommerce_order_itemmeta
FROM wpstg0_posts
LEFT JOIN wpstg0_postmeta ON wpstg0_posts.ID = wpstg0_postmeta.post_id
LEFT JOIN wpstg0_woocommerce_order_itemmeta ON wpstg0_postmeta.post_id = wpstg0_woocommerce_order_itemmeta.order_item_id
LEFT JOIN wpstg0_woocommerce_order_items ON wpstg0_posts.ID = wpstg0_woocommerce_order_items.order_item_id
WHERE wpstg0_posts.post_type = "shop_order"
AND wpstg0_posts.post_date < '2022-07-14';wpstg0_ を Staging サイトの正しいテーブルプレフィックスに、2022-07-14 を注文を削除したい基準となる現在の日付に変更する必要があります。
この SQL コマンドを関数でラップして、「wpstg.clone_first_run」フィルターを使って Staging サイトのクローン直後に実行することもできます。
add_action( 'wpstg.clone_first_run', array($this, 'wpstg_execute_after_cloning' ), 10);
function wpstg_execute_after_cloning() {
// add your code
}このフィルターは、WP STAGING Hooks Plugin で使うか、このガイドに従って標準的な mu-plugin として使えます。
Staging サイト作成時に WooCommerce 注文とそのメタデータを除外する
クローン処理の最初の段階で、WooCommerce 注文とそのメタデータを除外することもできます。
そのためには、次のフィルターを使えます:
function queryCloningRows($filters) {
$myFilters = [
// Clone only posts which do not belong to post_type shop_order
'wp_posts' => [
'post_type' => [
'operator' => 'NOT LIKE',
'value' => 'shop_order'
]
],
// will filter postmeta depending upon filtered data in wp_posts, see above wp_posts filter
'wp_postmeta' => [
'join' => [
'table' => 'wp_posts',
'primaryKey' => 'ID',
'foreignKey' => 'post_id',
]
],
'wp_woocommerce_order_items' => [
'join' => [
'table' => 'wp_posts',
'primaryKey' => 'ID',
'foreignKey' => 'post_id',
]
],
'wp_woocommerce_order_itemmeta' => [
'join' => [
'table' => 'wp_posts',
'primaryKey' => 'ID',
'foreignKey' => 'post_id',
]
]
];
return array_merge($filters, $myFilters);
}
add_filter('wpstg.cloning.database.queryRows', 'queryCloningRows');このフィルターは WP STAGING Hooks Plugin で使うか、このガイドに従って標準的な mu-plugin として使えます。
注: 上記のアプローチに従うと、Staging サイトからすべての注文と関連データが削除されます。つまり、Staging サイトを本番サイトに Push できなくなります。Push してしまうと本番サイトからも WooCommerce の注文が削除されてしまうからです。したがって、これらはテストや開発目的でのみ使用してください (開発者の作業完了後、変更を本番サイトに手動でコピーする意志がある場合)。