プラグインWooCommerceのwoocommerce_cancel_unpaid_orderアクションの使用方法・解説

概要

woocommerce_cancel_unpaid_order アクションは、WooCommerceにおいて未払いの注文がキャンセルされた際にトリガーされるフックです。このアクションは、特定の処理を実行するための機会を提供し、主に次のような機能を実装する際に利用されます。

  1. 未払いの注文キャンセル後にユーザーへの通知を送る。
  2. 在庫を再調整する処理を行う。
  3. 特定のログ情報を記録する。
  4. 外部サービスへの通知を行う。
  5. 検索エンジン最適化(SEO)のためのメタ情報調整を行う。
  6. フロントエンドやバックエンドのUIに変更を加える。

構文

do_action('woocommerce_cancel_unpaid_order', $order_id);

パラメータ

  • $order_id: キャンセルされた未払いの注文のID。

戻り値

このアクションは戻り値を返しません(void)。

使用可能なプラグインWooCommerceのバージョン

  • WooCommerce 3.0以上

ワードプレスのバージョン

  • WordPress 4.0以上

この関数のアクションでの使用可能性

アクション名 使用例
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプルコード 1 – ユーザーへの通知送信

add_action('woocommerce_cancel_unpaid_order', 'send_cancel_notification', 10, 1);
function send_cancel_notification($order_id) {
    $order = wc_get_order($order_id);
    $to = $order->get_billing_email();
    $subject = 'Your Order has been Cancelled';
    $message = 'Your order #' . $order_id . ' has been cancelled due to unpaid status.';
    wp_mail($to, $subject, $message);
}

このコードは、未払いの注文がキャンセルされた際に、該当するユーザーに通知メールを送信します。

サンプルコード 2 – 在庫の再調整

add_action('woocommerce_cancel_unpaid_order', 'restock_order_items', 10, 1);
function restock_order_items($order_id) {
    $order = wc_get_order($order_id);
    foreach ($order->get_items() as $item_id => $item) {
        $product = $item->get_product();
        $product->set_stock_status('instock');
        $product->save();
    }
}

このコードは、キャンセルされた未払い注文のアイテムの在庫状態を「在庫あり」に戻します。

サンプルコード 3 – ログの記録

add_action('woocommerce_cancel_unpaid_order', 'log_cancelled_order', 10, 1);
function log_cancelled_order($order_id) {
    error_log('Order ' . $order_id . ' was cancelled due to non-payment.');
}

このコードでは、キャンセルされた注文のIDをエラーログに記録します。

サンプルコード 4 – 外部サービスへの通知

add_action('woocommerce_cancel_unpaid_order', 'notify_external_service', 10, 1);
function notify_external_service($order_id) {
    $url = 'https://example.com/api/order/cancel';
    wp_remote_post($url, array(
        'body' => json_encode(array('order_id' => $order_id)),
        'headers' => array('Content-Type' => 'application/json'),
    ));
}

このコードは、外部APIにキャンセルされた注文の情報を通知します。

サンプルコード 5 – SEO用メタ情報の変更

add_action('woocommerce_cancel_unpaid_order', 'update_meta_for_cancelled_order', 10, 1);
function update_meta_for_cancelled_order($order_id) {
    // SEO用のメタ情報を更新する処理。
    update_post_meta($order_id, '_seo_status', 'cancelled');
}

このコードは、キャンセルされた注文のメタ情報を更新してSEO対策を行います。

この関数について質問する


上の計算式の答えを入力してください