此代码:
foreach ($order->meta_data as $row) {
if ($row->key == \'tid\') {
$tid = $row->value;
break;
}
}
在功能范围内
function function_name($order_id, $checkout = null) {
global $woocommerce;
$order = new WC_Order($order_id);
foreach ($order->meta_data as $row) {
if ($row->key == \'tid\') {
$tid = $row->value;
break;
}
}
if (!empty($tid)) {
...
}
}
add_action(\'woocommerce_order_status_changed\', \'function_name\');
触发PHP通知”
Order properties should not be accessed directly“我不知道问题出在哪里。我运行Woocommerce 3.0.8和Wordpress 4.8。这是一个bug还是我犯了一些错误?
Update:
固定代码如下所示:
foreach ($order->get_meta_data() as $row) {
if ($row->key === \'tid\') {
$tid = $row->value;
break;
}
}
甚至更好:
$tid = $order->get_meta($key = \'tid\');
更多信息来自
Woocommerce docs.
最合适的回答,由SO网友:Anastis 整理而成
这意味着你不应该访问$order->meta_data
(和其他属性),但使用提供的getter和setter函数。
在这种情况下,使用$order->get_meta_data()
.
此方法(最终)继承自WC_Data
班