概要
woocommerce_new_order_data アクションは、WooCommerceの新しい注文が作成された際にカスタマイズするために使用されるフックです。このアクションは、新しい注文のデータが保存される前に処理を行うためのもので、開発者はこのフックを使って以下のような機能を実装することがよくあります。
- 注文データの拡張
- 特定の条件に基づくカスタムメタデータの追加
- 外部システムへのデータ送信
- メール通知のカスタマイズ
- ログの記録
- 条件に基づくフラグの設定
構文
add_action('woocommerce_new_order_data', 'custom_function', 10, 1);
パラメータ
$order_data: 新しい注文に関連するデータを含む配列。
戻り値
このアクションに戻り値はありませんが、データの処理結果として $order_data を変更することができます。
使用可能なプラグインバージョン
- WooCommerce 3.0以上
- WordPress 4.0以上
サンプルコード
サンプルコード1: カスタムメタデータの追加
このコードは、新しい注文にカスタムメタデータを追加するものです。
add_action('woocommerce_new_order_data', 'add_custom_meta_to_order', 10, 1);
function add_custom_meta_to_order($order_data) {
$order_data['custom_meta'] = 'Your custom value';
return $order_data;
}
引用元: https://docs.woocommerce.com/wc-apidocs/class-WC_Order.html
サンプルコード2: 外部APIへの注文データ送信
新しい注文が作成された際に、外部APIに注文情報を送信するサンプルコードです。
add_action('woocommerce_new_order_data', 'send_order_data_to_api', 10, 1);
function send_order_data_to_api($order_data) {
$response = wp_remote_post('https://example.com/api/order', [
'body' => json_encode($order_data),
'headers' => ['Content-Type' => 'application/json']
]);
}
引用元: https://developer.wordpress.org/reference/functions/wp_remote_post/
サンプルコード3: カスタムメールのトリガー
このコードは、新しい注文が作成された際にカスタムメールをトリガーします。
add_action('woocommerce_new_order_data', 'trigger_custom_email_on_new_order', 10, 1);
function trigger_custom_email_on_new_order($order_data) {
// 特定の条件に基づきメール送信
if (isset($order_data['status']) && $order_data['status'] === 'pending') {
// メール送信処理
}
}
引用元: https://woocommerce.com/document/emails/
サンプルコード4: 注文データロギング
新しい注文が作成される際に、そのデータをログとして記録するサンプルコードです。
add_action('woocommerce_new_order_data', 'log_new_order_data', 10, 1);
function log_new_order_data($order_data) {
error_log(print_r($order_data, true));
}
引用元: https://developer.wordpress.org/reference/functions/error_log/
サンプルコード5: フラグの設定
このコードは、新しい注文に条件に基づいて特定のフラグを設定するものです。
add_action('woocommerce_new_order_data', 'set_flag_based_on_order_value', 10, 1);
function set_flag_based_on_order_value($order_data) {
if ($order_data['total'] > 100) {
$order_data['high_value_order'] = true;
}
return $order_data;
}
引用元: https://woocommerce.com/document/woocommerce-rest-api/
この関数のアクションでの使用可能性
| アクション | 使用例 |
|---|---|
| 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 |