概要
woocommerce_delete_order_item
アクションは、WooCommerceで注文アイテムが削除される際に発動するフックです。このフックは、特定の注文アイテムが削除された直後にカスタム処理を実行するために利用されます。一般的に、以下のような機能を実装する際に使用されることがあります:
- 削除アイテムに関連するカスタムデータの削除
- 削除されたアイテムをトラッキングするためのロギング
- 在庫管理システムへの連携
- 削除の通知を特定の管理者に送信
- 削除操作後の特定の条件に基づく計算やアクションの実行
- 分析目的でのデータベースへの記録や変更
構文
do_action( 'woocommerce_delete_order_item', $item_id, $order_id );
パラメータ
$item_id
(int): 削除されたアイテムのID$order_id
(int): 削除されたアイテムが属する注文のID
戻り値
このアクション自体は特に戻り値を持ちません。フックを通じてコールバック関数を実行することが目的です。
使用可能なプラグインのバージョン
- WooCommerce: 2.1.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_delete_order_item', function($item_id, $order_id) {
$item_data = wc_get_order_item($item_id);
$log_entry = sprintf('Item ID %d was deleted from Order ID %d.', $item_id, $order_id);
error_log($log_entry);
});
引用元: https://docs.woocommerce.com
サンプル2:在庫を更新
このサンプルコードでは、削除されたアイテムに対して在庫を増加させます。
add_action('woocommerce_delete_order_item', function($item_id, $order_id) {
$item = wc_get_order_item($item_id);
$product_id = $item->get_product_id();
$qty = $item->get_quantity();
if ($product_id) {
$product = wc_get_product($product_id);
$product->increase_stock($qty);
}
});
引用元: https://woocommerce.github.io/code-reference
サンプル3:カスタムデータ削除
削除されたアイテムに関連するカスタムメタデータも一緒に削除する例です。
add_action('woocommerce_delete_order_item', function($item_id, $order_id) {
delete_post_meta($item_id, '_custom_meta_key');
});
引用元: https://www.wpbeginner.com
サンプル4:管理者に通知
削除されたアイテムに関する通知を管理者に送信するサンプルです。
add_action('woocommerce_delete_order_item', function($item_id, $order_id) {
$admin_email = get_option('admin_email');
$subject = 'Order Item Deleted';
$message = 'Item ID ' . $item_id . ' was deleted from Order ID ' . $order_id;
wp_mail($admin_email, $subject, $message);
});
引用元: https://www.tutorialrepublic.com
サンプル5:削除されたアイテムの分析データを保存
削除されたアイテムの情報を別のデータベーステーブルに保存する例です。
add_action('woocommerce_delete_order_item', function($item_id, $order_id) {
global $wpdb;
$wpdb->insert('wp_deleted_order_items', array(
'item_id' => $item_id,
'order_id' => $order_id,
'deleted_at' => current_time('mysql')
));
});
引用元: https://www.wphowto.com
このように、woocommerce_delete_order_item
アクションを利用することで、削除された注文アイテムに対して多様なカスタム処理を実施することができます。