【发布时间】:2018-08-07 17:22:27
【问题描述】:
在 WooCommerce 3.0 出现之前,我的代码就像一种魅力,可以将购物车中的自定义值保存到结帐时的订单中。但从那以后,我无法为订单创建自定义元数据。
环境: Wordpress 4.9.4 和 WooCommerce 3.3.3
挂钩
add_action('woocommerce_checkout_update_order_meta', 'custom_meta_to_order', 20, 1);add_action('woocommerce_checkout_create_order', 'custom_meta_to_order', 20, 1);
第 1 个 Hook 是我尝试最多的一个,第 2 个只是对一些文字 changes mentioned in this topic 的实验。
功能
以下函数代码与钩号 1 相关:
if (!function_exists('custom_meta_to_order')) {
function custom_meta_to_order($order_id, $values) {
$order = wc_get_order( $order_id );
$order->update_meta_data('_TESTKEYstart', 'Hello');
if (isset($values['myValue'])) {
$myValue = $values['myValue'];
if (!empty($myValue)) $order->update_meta_data('_myKey', $myValue);
}
$order->update_meta_data('_TESTKEYend', 'Bye');
$order->save();
}
}
我还检查了 mySQL 表 table wp_woocommerce_order_itemmeta 是否至少会创建两个 _TESTKEY*-元条目(因为它们没有条件)。
- 但元键和值似乎不是通过这个钩子和函数创建的。
- 函数本身被调用,所以至少钩子本身在工作。
所以我的问题是:“我做错了什么?”
【问题讨论】:
标签: php wordpress woocommerce hook-woocommerce orders