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

概要

woocommerce_delete_order アクションは、WooCommerce において注文が削除された際に発生するフックです。このアクションを使用することで、注文が削除された後に特定の処理を実行することができます。例えば、カスタムロギングや関連データのクリーンアップ、外部APIとの連携などが考えられます。

以下に、このアクションがよく使われる機能の例を挙げます。

  1. 注文削除後のカスタムロギング
  2. 削除された注文に関連するデータのクリーンアップ
  3. 削除通知を外部サービスに送信
  4. 顧客への注文削除通知メールの送信
  5. 削除された注文情報を管理画面に記録
  6. 在庫数の再計算や更新

構文

do_action('woocommerce_delete_order', $order_id);

パラメータ

  • $order_id (int): 削除された注文のID。

戻り値

このアクションには戻り値はありません。

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

  • WooCommerce: 3.0以上
  • WordPress: 4.0以上

サンプルコード

サンプルコード 1: 注文削除時にログを記録する

このコードは、注文が削除された際にログファイルにメッセージを追加します。

add_action('woocommerce_delete_order', 'log_deleted_order', 10, 1);

function log_deleted_order($order_id) {
    $log_message = sprintf('Order %d has been deleted.', $order_id);
    error_log($log_message);
}

引用元: https://developer.wordpress.org/plugins/hooks/

サンプルコード 2: 削除された注文に関連するカスタムデータを削除

このコードは、注文が削除されたときに関連するカスタムメタデータを削除します。

add_action('woocommerce_delete_order', 'delete_related_custom_data', 10, 1);

function delete_related_custom_data($order_id) {
    delete_post_meta($order_id, '_custom_meta_key');
}

引用元: https://developer.wordpress.org/plugins/hooks/

サンプルコード 3: 削除された注文を外部APIに通知する

このコードは、外部APIに削除された注文の情報を送信します。

add_action('woocommerce_delete_order', 'notify_external_api', 10, 1);

function notify_external_api($order_id) {
    $url = 'https://api.example.com/order_deleted';
    $data = array('order_id' => $order_id);

    wp_remote_post($url, array(
        'method'    => 'POST',
        'body'      => json_encode($data),
        'headers'   => array('Content-Type' => 'application/json'),
    ));
}

引用元: https://developer.wordpress.org/plugins/hooks/

サンプルコード 4: 顧客に削除通知メールを送信する

このコードは、顧客に注文が削除されたことを知らせるメールを送信します。

add_action('woocommerce_delete_order', 'send_order_deleted_notification', 10, 1);

function send_order_deleted_notification($order_id) {
    $order = wc_get_order($order_id);
    $to = $order->get_billing_email();
    $subject = 'Your Order Has Been Deleted';
    $message = sprintf('Order %d has been deleted.', $order_id);

    wp_mail($to, $subject, $message);
}

引用元: https://developer.wordpress.org/plugins/hooks/

サンプルコード 5: 削除された注文情報を管理画面に記録する

このコードは、管理画面のエントリに削除された注文情報を記録します。

add_action('woocommerce_delete_order', 'record_deleted_order_info', 10, 1);

function record_deleted_order_info($order_id) {
    global $wpdb;
    $wpdb->insert('wp_order_deletes', array(
        'order_id' => $order_id,
        'deleted_at' => current_time('mysql'),
    ));
}

引用元: https://developer.wordpress.org/plugins/hooks/

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

アクション 使用例
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

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


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