概要
woocommerce_checkout_create_order_line_item_object
アクションは、WooCommerceのチェックアウトプロセスで、注文のラインアイテムをオブジェクトとして作成する際にフックされます。このアクションは、カスタム注文アイテムデータの追加や、特定の条件に基づくアイテムの処理に使用されます。このアクションを使うことによって、カスタム商品の詳細やメタデータを注文に追加することができます。
このアクションは以下のような機能を実装する際によく使われます。
- カスタム商品属性の保存
- 割引や特典の適用
- 商品ごとの特別なメタデータの追加
- 注文プロセスでの特別なロジックの挿入
- 注文確認メールのカスタマイズ
- 外部APIへのデータ送信
構文
add_action( 'woocommerce_checkout_create_order_line_item', 'custom_function', 10, 4 );
パラメータ
$item
:新しく作成されるラインアイテムオブジェクト。$cart_item_key
:カート内のアイテムのキー。$values
:カートアイテムの値(配列)。$order
:関連する注文オブジェクト。
戻り値
このアクションには戻り値はありませんが、指定したカスタムロジックに基づいてラインアイテムに変更を加えることができます。
使用可能なプラグインバージョン
- 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_checkout_create_order_line_item', 'add_custom_items_to_order', 10, 4 );
function add_custom_items_to_order( $item, $cart_item_key, $values, $order ) {
if( !empty($values['custom_meta_key']) ) {
$item->add_meta_data( 'Custom Field', $values['custom_meta_key'] );
}
}
このコードは、カートアイテムにカスタムメタデータが存在する場合、そのデータを注文のラインアイテムに追加します。
サンプルコード2
add_action( 'woocommerce_checkout_create_order_line_item', 'apply_discount_on_item', 10, 4 );
function apply_discount_on_item( $item, $cart_item_key, $values, $order ) {
if ( isset( $values['discount'] ) && $values['discount'] > 0 ) {
$item->set_total( $item->get_total() - $values['discount'] );
}
}
このコードは、カートアイテムに割引が設定されている場合、その割引をラインアイテムの合計に適用します。
サンプルコード3
add_action( 'woocommerce_checkout_create_order_line_item', 'add_special_note', 10, 4 );
function add_special_note( $item, $cart_item_key, $values, $order ) {
if ( isset( $values['special_note'] ) ) {
$item->add_meta_data( 'Special Note', $values['special_note'] );
}
}
このコードは、カート内のアイテムに特別なノートがある場合、それを注文のラインアイテムに追加します。
サンプルコード4
add_action( 'woocommerce_checkout_create_order_line_item', 'log_item_details_for_debugging', 10, 4 );
function log_item_details_for_debugging( $item, $cart_item_key, $values, $order ) {
error_log('Product ID: ' . $values['product_id']); // ログへ商品IDを出力
}
このコードは、各ラインアイテムの詳細(商品ID)をデバッグ用にエラーログとして記録します。
サンプルコード5
add_action( 'woocommerce_checkout_create_order_line_item', 'attach_new_service_to_order', 10, 4 );
function attach_new_service_to_order( $item, $cart_item_key, $values, $order ) {
if ( isset( $values['service'] ) ) {
$item->add_meta_data( 'Attached Service', $values['service'] );
}
}
このコードはカートアイテムにサービス情報がある場合、それを注文のラインアイテムに追加します。
これらのサンプルコードは、WooCommerceのチェックアウト過程で追加のカスタマイズを行う一例です。それぞれのコードは、特定の条件に基づいて注文のラインアイテムにデータを追加し、注文処理を柔軟にすることが可能です。