概要
woocommerce_checkout_create_order_line_item
は、WooCommerceでチェックアウト時に新しい注文行アイテムが作成される直前にトリガーされるフックです。このアクションは、開発者が注文行アイテムに追加のデータを追加したり、既存のデータを変更したりするために使用されます。具体的な用途としては、以下のようなケースが考えられます。
- カスタムフィールドの追加
- アイテムの価格変更
- 複雑な配送オプションの設定
- アイテムのメモやコメントの追加
- 特定の条件に基づく割引や特典の適用
- 外部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