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

概要

woocommerce_checkout_create_order_line_item_objectアクションは、WooCommerceのチェックアウトプロセスで、注文のラインアイテムをオブジェクトとして作成する際にフックされます。このアクションは、カスタム注文アイテムデータの追加や、特定の条件に基づくアイテムの処理に使用されます。このアクションを使うことによって、カスタム商品の詳細やメタデータを注文に追加することができます。

このアクションは以下のような機能を実装する際によく使われます。

  1. カスタム商品属性の保存
  2. 割引や特典の適用
  3. 商品ごとの特別なメタデータの追加
  4. 注文プロセスでの特別なロジックの挿入
  5. 注文確認メールのカスタマイズ
  6. 外部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のチェックアウト過程で追加のカスタマイズを行う一例です。それぞれのコードは、特定の条件に基づいて注文のラインアイテムにデータを追加し、注文処理を柔軟にすることが可能です。

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


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