我正试图找出通过官方WooCommerce出货跟踪插件输入跟踪信息时自动更新WooCommerce订单状态的最佳方法。我找到了Woo关于如何自动完成订单的文档,但我只希望在添加跟踪号时执行该文档。任何帮助将非常感激!
下面是Woo:
的代码/**
* Auto Complete all WooCommerce orders.
*/
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
function custom_woocommerce_auto_complete_order( $order_id ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
$order->update_status( 'completed' );
}
下面是来自插件的meta引用:
Shipping Tracking插件使用元键_wc_shipment_tracking_items在订单元数据中存储跟踪信息。它是一个具有以下结构的数组:
- tracking_provider -预定义的提供者字符串
- custom_tracking_provider -自定义提供程序字符串
- custom_tracking_link -自定义跟踪URL字符串
- 跟踪号字符串date_shipped -装运日期的时间戳
正如您所说,您正在使用"WooCommerce装运跟踪插件。"但是在那个插件中,我没有发现任何过滤器或挂钩,将有助于更新状态时添加跟踪号。但是我发现他们使用update_post_meta()
来更新跟踪代码,所以你可以使用update_postmeta
动作钩子来更新订单状态。
试试下面的代码。代码将放在您的活动主题函数。php文件中。
function update_order_status_when_shipment_tracking_input( $meta_id, $object_id, $meta_key, $meta_value ){
if( $meta_key == '_wc_shipment_tracking_items' ){
error_log('update_order_status_when_shipment_tracking_input');
$order = wc_get_order( $object_id );
if( $order ){
$order->update_status( 'completed' );
}
}
}
add_action( 'update_postmeta', 'update_order_status_when_shipment_tracking_input', 10, 4 );