gpt4 book ai didi

javascript - Woocommerce REST API : Add meta data to line-item and to the database

转载 作者:行者123 更新时间:2023-12-03 05:21:19 28 4
gpt4 key购买 nike

我正在使用 Woocommerce 构建一个 ionic 应用程序。

我看到了一些关于此问题的 stackoverflow 问题,但他们实际上没有回答这个问题,所以我再次提出这个问题。

我已经能够向数据库发送订单,但我需要向数据库添加一个元数据,而该数据是最重要的。

根据这个link ,元属性是只读的,因此不可用。

我想知道如何通过向订单 line_item 添加额外参数或通过某些 wordpress 或 web hook 来实现此目的。

我正在使用 WooCommerce API V3 的 JS 实现。

最佳答案

要将元数据保存到 line_item(订单中的产品),您可以 Hook woocommerce_new_order_item 操作。

像这样 Hook :

function my_line_item_metadata( $item_id, $item, $order_id ) {
// Here you have the item, his id, and the order's id
// You can get the order, for example
$order = new WC_Order( $order_id );
$items = $order->get_items();
foreach( $items as $line_item_id => $item ) {
// Here you can have all products from the order!
}

// Save here the metadata for the item id of the hooked line item
wc_add_order_item_meta( $item_id, '_my_metadata', 'my metadata value' );
}
add_action( 'woocommerce_new_order_item', 'my_line_item_metadata', 10, 3 );

正如您所说,您使用 WC API,您可能想将此字段添加到 API 返回中...为此,请使用以下代码:

/**
* Add order meta to the REST API
* @see http://codegists.com/code/order%20item%20meta%20rest%20response/
*
* @param \WP_REST_Response $response The response object.
* @param \WP_Post $post Post object.
* @param \WP_REST_Request $request Request object.
* @return object updated response object
*/
function my_add_metadata_on_line_item( $response, $post, $request ) {

$order_data = $response->get_data();

foreach ( $order_data['line_items'] as $key => $item ) {
$order_data['line_items'][ $key ]['_my_metadata'] = wc_get_order_item_meta( $item['id'], '_my_metadata', true );
}

$response->data = $order_data;

return $response;
}
add_filter( 'woocommerce_rest_prepare_shop_order', 'my_add_metadata_on_line_item', 10, 3 );

现在您的 API 将返回包含订单项的 _my_metadata

PS.:如果您不使用 _ 保存自定义元数据,WC 会在您可能不希望的某些位置显示元数据。使用 _ 元数据将被隐藏。

关于javascript - Woocommerce REST API : Add meta data to line-item and to the database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41368156/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com