我正在使用WooCommerce,并尝试检查逾期付款。每天下午6点(有时付款网关有点慢)之后支付的所有订单都将恢复为“保留”状态。我希望这种处理方式仅适用于明天交货的订单。
这不起作用(从未执行“保留”状态):
add_action( 'woocommerce_order_status_processing', 'check_late_payment' );
function check_late_payment( $order_id ){
date_default_timezone_set('Asia/Jakarta');
if (time() > strtotime("18:00:00")) {
$order = wc_get_order( $order_id );
if ( get_post_meta( $order_id, '_orddd_timestamp', true ) == strtotime('tomorrow') ) {
$order->update_status( 'on-hold' );
}
}
}
但是,它正在工作:
add_action( 'woocommerce_order_status_processing', 'check_late_payment' );
function check_late_payment( $order_id ){
date_default_timezone_set('Asia/Jakarta');
if (time() > strtotime("18:00:00")) {
$order = wc_get_order( $order_id );
if ( get_post_meta( $order_id, '_orddd_timestamp', true ) == '1531785600' ) {
$order->update_status( 'on-hold' );
}
}
}
唯一的区别是strtotime和常量字符串。我已经检查了meta值,它与strtotime(“明天”)完全一样。
有什么想法为什么不起作用?
我需要它始终是明天的时间戳。
谢谢。
答案 0 :(得分:0)
尝试这个[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, IncludeExceptionDetailInFaults=true)]
,让我知道它是否有效。