我正在使用WooCommerce在Wordpress网站上工作。我必须实现一些额外的功能,其中之一是标记完成后的一些简单操作。我在functions.php:
中使用woocommerce_order_status_completed
钩子
add_action( 'woocommerce_order_status_completed' , 'pontfeliras_woocommerce_order_status_completed',10,2);
function pontfeliras_woocommerce_order_status_completed( $order ) {
$order = new WC_Order($order);
$order_id = $order->id;
$user_id = $order->user_id;
...
boring code here
...
update_field( 'pontertek_felirva', true );
}
}
如果我打开订单进行编辑(通过点击管理员中的订单#),那么将订单状态设置为已完成会使该功能完全消失,我想要它。
但如果我在批量修改部分尝试此功能,则可以看到多个订单 - >勾选复选框 - >标记为已完成 - >然后应用所需的操作不会发生,只有订单设置为完成。也许它与代码的这一部分有关:
$order = new WC_Order($order);
这部分创建对象,如下所示(使用var_dump($ order);):
object(WC_Order)#9567 (14) {
["order_type"]=>
string(6) "simple"
["id"]=>
int(375)
["post"]=>
object(WP_Post)#9526 (24) {
["ID"]=>
int(375)
["post_author"]=>
string(1) "1"
["post_date"]=>
string(19) "2015-10-11 23:20:00"
["post_date_gmt"]=>
string(19) "2015-10-11 23:20:00"
["post_content"]=>
string(0) ""
["post_title"]=>
string(43) "Order – október 11, 2015 @ 11:20 DU."
["post_excerpt"]=>
string(0) ""
["post_status"]=>
string(12) "wc-completed"
["comment_status"]=>
string(6) "closed"
["ping_status"]=>
string(6) "closed"
["post_password"]=>
string(0) ""
["post_name"]=>
string(29) "order-oktober-11-2015-1120-du"
["to_ping"]=>
string(0) ""
["pinged"]=>
string(0) ""
["post_modified"]=>
string(19) "2015-10-11 23:20:29"
["post_modified_gmt"]=>
string(19) "2015-10-11 23:20:29"
["post_content_filtered"]=>
string(0) ""
["post_parent"]=>
int(0)
["guid"]=>
string(55) "http://flavantic.local/?post_type=shop_order&p=375"
["menu_order"]=>
int(0)
["post_type"]=>
string(10) "shop_order"
["post_mime_type"]=>
string(0) ""
["comment_count"]=>
string(1) "1"
["filter"]=>
string(3) "raw"
}
["order_date"]=>
string(19) "2015-10-11 23:20:00"
["modified_date"]=>
string(19) "2015-10-11 23:20:29"
["customer_message"]=>
string(0) ""
["customer_note"]=>
string(0) ""
["post_status"]=>
string(12) "wc-completed"
["prices_include_tax"]=>
bool(true)
["tax_display_cart"]=>
string(4) "incl"
["display_totals_ex_tax"]=>
bool(false)
["display_cart_ex_tax"]=>
bool(false)
["formatted_billing_address":protected]=>
string(0) ""
["formatted_shipping_address":protected]=>
string(0) ""
}
我尝试使用foreach循环进行迭代,但没有成功。应该是什么解决方案?