需要向订单项目添加自定义元。谷歌搜索了它,大多数文章说使用“woocommerce\u add\u order\u item\u meta”钩子。最新版本2.3中不推荐使用此挂钩。有人,请告诉我该用哪个钩子代替。
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_new_order_item替换了操作名woocommerce_add_order_item_meta,弃用通知消失了,问题是现在一些参数出现在legacy_values数组中。我使用插件YITH WooCommerce产品附加组件,应该附加到订单的产品元数据不会被插件提取,因此不会与订单一起存储。因此,在插件中修复此问题之前,您必须使用弃用通知。
如果您查看wc不推荐使用的函数。php
您将看到
/**
* @deprecated
*/
function woocommerce_add_order_item_meta( $item_id, $meta_key, $meta_value, $unique = false ) {
return wc_add_order_item_meta( $item_id, $meta_key, $meta_value, $unique );
}
基本上,函数被重命名为wc_add_order_item_meta()
,所以如果需要函数,请使用它。操作钩子没有重命名,并保留在class-wc-checkout.php
中:
// Allow plugins to add order item meta
do_action( 'woocommerce_add_order_item_meta', $item_id, $values, $cart_item_key );
2017/2018正确的方式(使用新的CRUD设置器和获取器方法)
相关:在woocommerce 3.4中替换woocommerce\添加\订单\项目\元挂钩
由于woocommerce 3改进了许多功能,并进行了重大更改,因此即使在woocommerce 3.3版中,操作挂钩woocommerce\u add\u order\u item\u meta
仍能完美工作。
此钩子是通过签出过程中的WC\u Checkout
类方法和相关函数启用的,而不是在购物车数据不再可用的WC\u Order
类中启用的。
现在,随着woocommerce 3引入了新的CRUD setters和getter方法,将要使用的类似替换钩子是woocommerce\u checkout\u create\u order\u line\u item
,它具有与购物车数据类似的有用参数。
由于无法访问购物车数据,woocommerce\u new\u order\u项目
确实不方便。
让我们看看如何使用woocommerce\u checkout\u create\u order\u line\u item
。它有4个可用参数:
$project
是一个实例的WC_Order_Item_Product
新引入的Class$cart_item_key
是购物车项目唯一的哈希密钥$value
是购物车项目$order
WC_Order对象的实例(在某些特定情况下,这是一个非常有用的附加参数)在这个钩子中,我们将用新的wc\u Data
update\u meta\u Data()
方法替换旧的工作函数wc\u add\u order\u item\u meta()。
例子:
## --- New way --- ##
add_action( 'woocommerce_checkout_create_order_line_item', 'custom_checkout_create_order_line_item', 20, 4 );
function custom_checkout_create_order_line_item( $item, $cart_item_key, $values, $order ) {
// Get a product custom field value
$custom_field_value = get_post_meta( $item->get_product_id(), '_meta_key', true );
// Update order item meta
if ( ! empty( $custom_field_value ) ){
$item->update_meta_data( 'meta_key1', $custom_field_value );
}
// … … Or … …
// Get cart item custom data and update order item meta
if( isset( $values['custom_data'] ) ) {
$item->update_meta_data( 'meta_key2', $values['custom_data'] );
}
}
最后,我们可以使用woocommerce\u add\u order\u item\u meta
hook对旧方法执行相同的操作,因为它具有几乎相同的有用参数:
## --- Old way --- ##
add_action( 'woocommerce_add_order_item_meta', 'custom_add_order_item_meta', 20, 3 );
function custom_add_order_item_meta( $item_id, $values, $cart_item_key ) {
// Get a product custom field value
$custom_field_value = get_post_meta( $values['data']->get_id(), '_meta_key', true );
// Update order item meta
if ( ! empty( $custom_field_value ) ){
wc_add_order_item_meta( $item_id, 'meta_key1', $custom_field_value );
}
// … … Or … …
// Get cart item custom data and update order item meta
if( isset( $values['custom_data'] ) ) {
wc_add_order_item_meta( $item_id, 'meta_key2', $values['custom_data'] );
}
}
结论:woocommerce\u checkout\u create\u order\u line\u item
是与woocommerce 3一起使用的正确的替换挂钩,并且是新的CRUD setters和getter方法。
我试图在wp_woocommerce_order_itemmeta表中创建自定义元数据。但是要创建我想存储为元数据的数据,我需要知道在WooCommerce钩子woocommerce_checkout_create_order_line_item上创建的订单项的product_id。 我已经成功地用会话变量的值创建了一个元记录,但是当我试图获取订单项目的产品id时,我的代码失败了。我非常希望能找到
如果使用我的优惠券类型,我将尝试折扣购物车中最便宜的商品: 折扣金额非常奇怪-无论我怎么尝试,它都不会达到我期望的价值。起初我以为这是一个百分比折扣,但我希望这是一个固定的数额。我试着在网站的其他地方运行我的“获取最低价格”功能,当最低值项为11.95时,它返回1.195,所以我知道该部分工作正常。但是265.60的总折扣是23.90——我就是不明白! 我只想在购物车里买到最低价的商品,并打折。
NNAPI 1.1已经支持SPACE_TO_BATCH_ND和BATCH_TO_SPACE_ND操作,但是当前的TFLite代码还没有实现。参见:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/nnapi_delegate.cc#L607 我试着这样添加它们: 但它不起作用,当我在android设备上运行它时
我正在与CheckMarx漏洞之一作斗争。我需要一些指导来支持这一点。以下是我的代码: 这里con是(HttpurlConnection)新URL(“一些URL”)。openConnection()。 所以,checkmarx在《in》中强调了这个问题。readLine()。 我尝试的变通方法: 1: StringEscape eUtils.unescapeJson(in.readLine()),
我正在尝试获取具有某些类别和属性的产品列表。Dirrect链接工作正常,但自定义规则无法按预期工作。是的,我在管理面板中重新加载永久链接。请帮我找到解决办法。吴哥商业产品清单。 如果我打开index.php?product_cat=oil
Elasticsearch中的新search_as_you_type数据类型和标记器类型edge_ngram有什么区别?在构建即用型搜索引擎时更喜欢哪一个? Elasticsearch的文档提供了两种实现: search\u as\u you\u type数据类型:https://www.elastic.co/guide/en/elasticsearch/reference/current/sea