php - 在 WooCommerce 中将索引数组转换为可读的订单项元数据
问题描述
我在添加自定义订单商品元数据时遇到问题。我找到了一种方法,但它看起来很糟糕。
编码:
add_action('woocommerce_add_order_item_meta', 'func_add_custom_data_to_order_item_meta',1,2);
function func_add_custom_data_to_order_item_meta( $item_id, $values ) {
global $woocommerce,$wpdb;
if(!empty($values['custom'])){
$custom_order_meta = $values['custom'];
wc_add_order_item_meta($item_id, 'custom', serialize($custom_order_meta));
}
}
有没有办法遍历键值对并每次都在新行上获取它们的内容?
解决方案
更新
自 WooCommerce 3 以来,该钩子woocommerce_add_order_item_meta
已过时并被替换……请参阅Woocommerce:哪个钩子替换已弃用的“woocommerce_add_order_item_meta”。
要获得分离的可读自定义订单项目数据(而不是序列化数组)试试这个:
add_action('woocommerce_checkout_create_order_line_item', 'add_custom_cart_item_data_as_order_item_meta', 10, 4 );
function add_custom_cart_item_data_as_order_item_meta( $item, $cart_item_key, $values, $order ) {
if( isset($values['custom']['length']) ){
$item->update_meta_data( 'Length', $values['custom']['length'] );
}
// elseif … ad so on
}
代码在您的活动子主题(活动主题)的 function.php 文件中。
推荐阅读
- java - Spring Boot 执行器 endpoints.enabled=false endpoints.health.enabled=true
- flutter - Flutter 中的两个 setState 表达式有什么区别?
- javascript - 禁用 TensorFlow JS 调试信息
- python - 定义一个打印字符串的函数 one()
- java - 如何在片段容器中包装活动
- c# - 是否可以将 Google 地球集成到 C# 桌面应用程序中?
- javascript - 将像素坐标转换为纬度
- powershell - 在不同帐户下的远程服务器上运行 exe
- python - 通过 Python 在 Midi 的特定时间写笔记
- c++ - 读取整数并用它们填充二维数组的函数