14

カスタム メタを注文アイテムに追加する必要があります。グーグルで調べたところ、ほとんどの記事で「woocommerce_add_order_item_meta」フックを使用するように言われています。このフックは、最新バージョン 2.3.7 では非推奨です。誰か、代わりにどのフックを使うべきか教えてください。

http://docs.woothemes.com/wc-apidocs/function-woocommerce_add_order_item_meta.html

4

8 に答える 8

5

フックもバージョン 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 を使用していますが、注文に添付する必要がある製品メタ データがプラグインによって取得されないため、注文と共に保存されません。したがって、これがプラグインで修正されるまで、非推奨の通知を受け入れる必要があります。

于 2017-04-25T11:42:25.850 に答える
1

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
            }

}

于 2018-03-20T16:38:49.287 に答える