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

概要

woocommerce_checkout_create_order_line_itemは、WooCommerceでチェックアウト時に新しい注文行アイテムが作成される直前にトリガーされるフックです。このアクションは、開発者が注文行アイテムに追加のデータを追加したり、既存のデータを変更したりするために使用されます。具体的な用途としては、以下のようなケースが考えられます。

  1. カスタムフィールドの追加
  2. アイテムの価格変更
  3. 複雑な配送オプションの設定
  4. アイテムのメモやコメントの追加
  5. 特定の条件に基づく割引や特典の適用
  6. 外部APIへのデータ送信

構文

do_action( 'woocommerce_checkout_create_order_line_item', $item, $cart_item_key, $values, $order );

パラメータ

  • $item: 注文行アイテムオブジェクト。
  • $cart_item_key: カート内の特定のアイテムのキー。
  • $values: カートアイテムの値。
  • $order: 対応する注文オブジェクト。

戻り値

このアクションは戻り値を返しません。代わりに、対象のオブジェクトを変更するために利用されます。

WooCommerceのバージョン

WooCommerce 2.1.0以降で使用可能。

WordPressのバージョン

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_field_to_order_item', 10, 4 );

function add_custom_field_to_order_item( $item, $cart_item_key, $values, $order ) {
    if ( isset( $values['custom_field'] ) ) {
        $item->add_meta_data( 'Custom Field', $values['custom_field'] );
    }
}

このコードは、カートアイテムにカスタムフィールドが存在する場合、それを注文行アイテムに追加するものです。引用元: https://www.businessbloomer.com/woocommerce-add-item-meta-fields/

サンプルコード2

add_action( 'woocommerce_checkout_create_order_line_item', 'modify_order_item_price', 10, 4 );

function modify_order_item_price( $item, $cart_item_key, $values, $order ) {
    $new_price = $item->get_total() * 0.9; // 10%割引を適用
    $item->set_total( $new_price );
}

このコードは、注文行アイテムの価格に10%の割引を適用するものです。引用元: https://woocommerce.github.io/code-reference/classes/WC_Order_Item_Product.html

サンプルコード3

add_action( 'woocommerce_checkout_create_order_line_item', 'add_comment_to_order_item', 10, 4 );

function add_comment_to_order_item( $item, $cart_item_key, $values, $order ) {
    $item->add_meta_data( 'コメント', '特別な要求がありました。' );
}

このコードは、注文行アイテムに特定のコメントを追加します。引用元: https://docs.woocommerce.com/

サンプルコード4

add_action( 'woocommerce_checkout_create_order_line_item', 'attach_external_data_to_item', 10, 4 );

function attach_external_data_to_item( $item, $cart_item_key, $values, $order ) {
    $external_data = get_external_data( $values['product_id'] );
    if ( $external_data ) {
        $item->add_meta_data( '外部データ', $external_data );
    }
}

このコードは、カートアイテムのプロダクトIDに基づいて外部データを取得し、それを注文行アイテムに追加します。引用元: https://woocommerce.com/

サンプルコード5

add_action( 'woocommerce_checkout_create_order_line_item', 'set_custom_shipping_cost', 10, 4 );

function set_custom_shipping_cost( $item, $cart_item_key, $values, $order ) {
    if ( $values['product_id'] == 123 ) { // 特定の製品ID
        $item->set_shipping_total( 5.00 ); // 配送料を5ドルに設定
    }
}

このコードは、特定の製品に対してカスタムの配送料を設定します。引用元: https://woocommerce.github.io/code-reference/classes/WC_Order_Item_Shipping.html

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


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