我试图在wp_woocommerce_order_itemmeta表中创建自定义元数据。但是要创建我想存储为元数据的数据,我需要知道在WooCommerce钩子woocommerce_checkout_create_order_line_item上创建的订单项的product_id。
我已经成功地用会话变量的值创建了一个元记录,但是当我试图获取订单项目的产品id时,我的代码失败了。我非常希望能找到解决方案。
因此,下面的代码通过在meta_key_raw_location_id的表中创建wp_woocommerce_order_itemmeta记录来工作
add_action('woocommerce_checkout_create_order_line_item', 'raw_order_item_meta', 20, 2);
function raw_order_item_meta( $order ) {
$order->update_meta_data( '_raw_location_id', $_SESSION['location_id'] );
}
所以我“增强”了代码,以创建另一个记录,但meta_key值为product_id美元。在添加我认为必要的代码时,结帐不完成,所以我永远不会到达感谢页面。结帐页将重新显示,数据库中没有任何更改。我通过一次添加一行代码进行了细致的测试。为了便于参考,我在下面对代码行进行了编号。
我发现添加行“3”会导致错误。因此,我无法验证第4行
>
函数raw_order_item_meta
$项目=$order-
$product\U id=$item-
美元订单-
美元订单-
}
您正在以错误的方式使用woocommerce_checkout_create_order_line_item
,因为您的代码中的钩子参数是错误的。正确的代码是:
add_action('woocommerce_checkout_create_order_line_item', 'add_order_item_custom_meta', 10, 4 );
function add_order_item_custom_meta( $item, $cart_item_key, $cart_item, $order ) {
$item->update_meta_data( '_raw_location_id', $_SESSION['location_id'] );
}
因此,正如您所看到的,您不需要循环查看订单项目(作为当前订单项目,$item
s),您的第二个代码将是:
add_action('woocommerce_checkout_create_order_line_item', 'add_order_item_custom_meta', 10, 4 );
function add_order_item_custom_meta( $item, $cart_item_key, $cart_item, $order ) {
$product_id = $item->get_variation_id() ? $item->get_variation_id() : $item->get_product_id();
$item->update_meta_data( '_raw_location_id', $_SESSION['location_id'] );
$item->update_meta_data( '_raw_product_id', $product_id );
}
或者以另一种方式做同样的事情:
add_action('woocommerce_checkout_create_order_line_item', 'add_order_item_custom_meta', 10, 4 );
function add_order_item_custom_meta( $item, $cart_item_key, $cart_item, $order ) {
$product = $item->get_product(); // The WC_Product instance Object
$item->update_meta_data( '_raw_location_id', $_SESSION['location_id'] );
$item->update_meta_data( '_raw_product_id', $product->get_id() ); // Set the product ID
}
代码进入函数。活动子主题(或活动主题)的php文件。它应该会起作用。
相关的:
需要向订单项目添加自定义元。谷歌搜索了它,大多数文章说使用“woocommerce\u add\u order\u item\u meta”钩子。最新版本2.3中不推荐使用此挂钩。有人,请告诉我该用哪个钩子代替。 http://docs.woothemes.com/wc-apidocs/function-woocommerce_add_order_item_meta.html
如果使用我的优惠券类型,我将尝试折扣购物车中最便宜的商品: 折扣金额非常奇怪-无论我怎么尝试,它都不会达到我期望的价值。起初我以为这是一个百分比折扣,但我希望这是一个固定的数额。我试着在网站的其他地方运行我的“获取最低价格”功能,当最低值项为11.95时,它返回1.195,所以我知道该部分工作正常。但是265.60的总折扣是23.90——我就是不明白! 我只想在购物车里买到最低价的商品,并打折。
我正在与CheckMarx漏洞之一作斗争。我需要一些指导来支持这一点。以下是我的代码: 这里con是(HttpurlConnection)新URL(“一些URL”)。openConnection()。 所以,checkmarx在《in》中强调了这个问题。readLine()。 我尝试的变通方法: 1: StringEscape eUtils.unescapeJson(in.readLine()),
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
PHP/Apache2中的文件获取内容是从Facebook获取用户图片。直到最近,它一直运转良好。现在,它总是在一分钟后超时,在我的Apache2 error.log中有以下错误: PHP警告:文件\u获取\u内容(https://graph.facebook.com/999999999/picture?width=200):无法打开流:连接超时 下面是代码(我最近添加了$context以查看它是
我正在开发一个lwjgl项目,其代码如下: 我收到以下错误消息: org.lwjgl.LWJGLException:无法在org.lwjgl.opengl.创建上下文(WGL_ARB_create_context)在org.lwjgl.opengl.WindowsContextImplementation.create(WindowsContextImplementation.java:50)在o