我在WooCommerce上使用这个代码和平代码from this answer来自动完成付费处理订单:
/**
* AUTO COMPLETE PAID ORDERS IN WOOCOMMERCE
*/
add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_paid_order', 10, 1 );
function custom_woocommerce_auto_complete_paid_order( $order_id ) {
if ( ! $order_id ) {
return;
}
$order = wc_get_order( $order_id );
// No updated status for orders delivered with Bank wire, Cash on delivery and Cheque payment methods.
if ( ( get_post_meta($order->id, '_payment_method', true) == 'bacs' ) || ( get_post_meta($order->id, '_payment_method', true) == 'cod' ) || ( get_post_meta($order->id, '_payment_method', true) == 'cheque' ) ) {
return;
}
// "completed" updated status for paid Orders with all others payment methods
else {
$order->update_status( 'completed' );
}
}
但问题是我使用了一个特殊的支付网关,其中API通过'cod'支付方式进行桥接,并且订单有时保持在这个'woocommerce_thankyou'钩子上的暂停状态 .
所以我需要一直扫描“处理”命令以将它们传递到完整状态 . 我尝试了不同的东西和钩子,但我不能按预期工作 .
我怎样才能做到这一点?
谢谢
2 回答
为了实现这一点,您只需要一个小函数,它将扫描“init”挂钩上具有“处理”状态的所有订单,并将此状态更新为“已完成” .
这是代码:
此代码经过测试和运行 .
代码位于活动子主题(或主题)的function.php文件中 . 或者也可以在任何插件php文件中 .
WooCommerce虚拟订单可以在付款后自动标记为“已完成”,只需将一些代码添加到自定义插件或主题functions.php文件中 . 默认情况下,WooCommerce会在成功付款后将虚拟可下载订单标记为“已完成”,这是有道理的,但某些商店所有者希望能够在付款时自动将虚拟订单标记为已完成,例如在网站的情况下在没有进一步行动的情况下进行捐赠 . 为此,请使用以下代码,该代码基于核心虚拟可下载的已完成订单状态:
OR
您还可以使用插件进行自动完成订单
这是插件网址:https://wordpress.org/plugins/woocommerce-autocomplete-order/screenshots/
请让我知道哪些是完整的使用 .
Thnaks .