WooCommerce で注文ステータスを完了に変更された時に何かの処理をするには「woocommerce_order_status_completed」フィルターを使うと便利です。
自社 EC サイトでは、開発・運営チームから有償サポートを受けられるチケットを販売していまして「特定のユーザーが購入したサポートチケットの枚数分をプラスする」処理などに使っています。
add_action( 'woocommerce_order_status_completed', 'add_support_ticket', 10, 1 );
function add_support_ticket( $order_id ){
// 注文情報を取得
$order = wc_get_order( $order_id );
$user_id = $order->get_user_id(); // 購入したユーザーのIDを取得
$support_ticket_product_id = '123'; // 対象となる商品ID。オプションに保存しておくなどしておくと、いちいち指定しなくていいので便利
// 注文に含まれる商品をチェック
foreach ( $order->get_items() as $item_id => $item ) {
$product_id = $item->get_product_id(); // 商品IDを取得
$quantity = $item->get_quantity(); // 商品の購入数量を取得
// 特定の商品IDが見つかれば処理
if ( $product_id == $support_ticket_product_id ) {
// チケット数を追加する
$current_support_ticket_num = get_user_meta( $user_id, 'custom_support_ticket', true );
$new_support_ticket_num = absint( $current_support_ticket_num ) + absint( $quantity );
update_user_meta( $user_id, 'custom_support_ticket', $new_support_ticket_num );
}
}
}
