由于未知的原因,我的功能不更新ACF自定义字段。功能是搜索特殊订单说明(请不要问为什么插件开发者自己没有添加跟踪号码到订单 meta)。
看起来一切都是正确的,但我仍然没有看到更新。请帮助找到我的错误。
// add_action( 'woocommerce_after_order_object_save', 'find_tracking', 10, 1); // Also tried, it runs function 3 times
add_action( 'save_post_shop_order', 'pax_find_tracking', 10, 1);
function find_tracking ($order_id) {
global $wpdb;
$order = wc_get_order( $order_id );
$ID = $order->get_id();
$status = $order->get_status();
if ('completed' == $status) { // it's for testing
$table_perfixed = $wpdb->prefix . 'comments';
$sql = "SELECT `comment_content` FROM $table_perfixed WHERE `comment_post_ID` = $ID AND `comment_content` LIKE '%Shipment data sent to server%'";
$result = $wpdb->get_var($sql); // checked, correct unique result
if ($result) {
$result = mb_substr($result, 44); // checked, correct tracking number
update_field('my_tracking_field', $result, $ID); // Also tried without $ID
//$order->add_order_note($result); // Checked result — it's string, not empty, $result is fine
}
}
}
1条答案
按热度按时间igetnqfo1#
没有找到问题的根源,但解决办法是使用
update_post_meta
而不是update_field
。