カスタム メタを注文アイテムに追加する必要があります。グーグルで調べたところ、ほとんどの記事で「woocommerce_add_order_item_meta」フックを使用するように言われています。このフックは、最新バージョン 2.3.7 では非推奨です。誰か、代わりにどのフックを使うべきか教えてください。
http://docs.woothemes.com/wc-apidocs/function-woocommerce_add_order_item_meta.html
カスタム メタを注文アイテムに追加する必要があります。グーグルで調べたところ、ほとんどの記事で「woocommerce_add_order_item_meta」フックを使用するように言われています。このフックは、最新バージョン 2.3.7 では非推奨です。誰か、代わりにどのフックを使うべきか教えてください。
http://docs.woothemes.com/wc-apidocs/function-woocommerce_add_order_item_meta.html
フックもバージョン 3.0.4 で廃止されたようです。私はこの通知を受け取っています:
The The "woocommerce_add_order_item_meta" hook uses out of date data structures and function is deprecated since version 3.0.4. Replace with woocommerce_new_order_item.
問題のあるプラグインの add_action ステートメントで、アクション名 'woocommerce_add_order_item_meta' を 'woocommerce_new_order_item' に置き換えたところ、非推奨の通知が消えました。問題は、一部のパラメーターがlegacy_values
配列内に表示されるようになったことです。プラグイン YITH WooCommerce Product Add Ons を使用していますが、注文に添付する必要がある製品メタ データがプラグインによって取得されないため、注文と共に保存されません。したがって、これがプラグインで修正されるまで、非推奨の通知を受け入れる必要があります。
Ilgıt Yıldırım の回答に追加したかったのですが、私の場合、カスタム値は item->legacy_values 配列に存在しませんでした。これを修正するために、woocommerce_new_order_item フックを呼び出す前に、woocommerce_checkout_create_order_line_item フックを使用してアイテムにカスタム値を追加しました。その例を次に示します。
add_action( 'woocommerce_checkout_create_order_line_item', 'save_values_in_item', PHP_INT_MAX, 4 );
function save_values_in_item( $item, $cart_item_key, $values, $order ) {
$item->myCustomValues = $values;
}
//その後、新しいフックを呼び出します: add_action( 'woocommerce_new_order_item', 'add_product_input_fields_to_order_item_meta_wc3', PHP_INT_MAX, 3 );
関数 add_product_input_fields_to_order_item_meta_wc3( $item_id, $item, $order_id ) {
if ( isset( $item->myCustomValues ) )
{
//iterate through array and place desired values into the meta data using the wc_add_order_item_meta function
}
}