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

概要

woocommerce_checkout_order_created アクションは、WooCommerceにおいて新しい注文が作成された際にトリガーされるフックです。このアクションを使用することで、開発者は注文が作成された後に特定の処理を実行することができます。一般的には、以下のような機能を実装する際に使用されることが多いです。

  1. 注文情報を外部のCRMシステムに送信する。
  2. 注文が完成したことを顧客に通知するメールを送信する。
  3. 注文内容をデータベースに記録する。
  4. ポイントや割引を適用する処理を追加する。
  5. 注文状況に基づいてカスタムアクションを実行する。
  6. 注文に関連するサードパーティサービスへのデータを送信する。

構文

add_action('woocommerce_checkout_order_created', 'your_function_name', 10, 2);

パラメータ

  • $order: 作成された WooCommerce の注文オブジェクト。
  • $data: 注文作成時のデータ(アレイ形式)。

戻り値

このアクションは特に戻り値を持ちません。

使用可能なバージョン

  • WooCommerce バージョン: 3.0以上
  • WordPress バージョン: 4.0以上

サンプルコード

サンプル1: 注文情報を外部APIに送信する

add_action('woocommerce_checkout_order_created', 'send_order_to_external_api', 10, 2);

function send_order_to_external_api($order, $data) {
    $order_data = [
        'id' => $order->get_id(),
        'total' => $order->get_total(),
        'items' => $order->get_items(),
    ];

    // 外部APIにデータを送信する処理
    wp_remote_post('https://example.com/api/orders', [
        'method' => 'POST',
        'body' => json_encode($order_data),
        'headers' => [
            'Content-Type' => 'application/json',
        ],
    ]);
}
  • このサンプルコードは、チェックアウト時に新しく作成された注文の情報を外部のAPIにPOSTして送信します。

サンプル2: 注文完了通知をメールで送信

add_action('woocommerce_checkout_order_created', 'send_order_completion_email', 10, 2);

function send_order_completion_email($order, $data) {
    $to = $order->get_billing_email();
    $subject = 'Your Order Has Been Completed!';
    $message = 'Thank you for your order. Your order ID is: ' . $order->get_id();

    wp_mail($to, $subject, $message);
}
  • こちらのコードは、顧客がチェックアウトを完了した後に、注文確認のメールを送信する処理を実装しています。

サンプル3: 注文データを独自のテーブルに保存

add_action('woocommerce_checkout_order_created', 'save_order_to_custom_table', 10, 2);

function save_order_to_custom_table($order, $data) {
    global $wpdb;
    $table_name = $wpdb->prefix . 'custom_orders';
    $wpdb->insert($table_name, [
        'order_id' => $order->get_id(),
        'total' => $order->get_total(),
        'created_at' => current_time('mysql'),
    ]);
}
  • このサンプルでは、新規注文の情報をWordPressのカスタムテーブルに保存する方法を示しています。

サンプル4: ポイントシステムのためのカスタム処理

add_action('woocommerce_checkout_order_created', 'apply_loyalty_points', 10, 2);

function apply_loyalty_points($order, $data) {
    $user_id = $order->get_user_id();
    $loyalty_points = (int)($order->get_total() / 10); // 100円ごとに1ポイント
    // ユーザーメタにポイントを追加
    update_user_meta($user_id, 'loyalty_points', get_user_meta($user_id, 'loyalty_points', true) + $loyalty_points);
}
  • このサンプルは、注文の合計金額に基づいて顧客にポイントを付与するカスタム処理を実装しています。

サンプル5: 注文状況に応じてカスタムアクションを実行

add_action('woocommerce_checkout_order_created', 'custom_action_based_on_order_status', 10, 2);

function custom_action_based_on_order_status($order, $data) {
    if ($order->has_status('completed')) {
        // 注文が完了したときのカスタム処理
        // 例えば、特定のサービスを開始する
    }
}
  • 最後のサンプルは、注文が「完了」状態になった際に特定の処理を実行する方法を示しています。

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

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

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


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