我WooCommerce,我正在使用“ Change admin payment status back to unpaid for pending order status in Woocommerce” 答案代码来将后端中的订单状态手动更改为待处理,以重置订单的付款状态。
例如,如果订单状态从“已完成”更改为“待处理”,它将删除以下内容:“ 2019年4月2日下午5:29支付”
现在,我的问题是在将订单状态设置为“待处理”后,我尝试将状态再次设置为“已完成”,但无法设置付款日期或完成日期。
我正在使用最新版本的Woocommerce版本5.1.1
有什么解决方法吗?
答案 0 :(得分:1)
更新#1 -要解决此问题,请尝试以下操作:
add_action( 'woocommerce_order_status_changed', 'pending_reset_order_paid_date', 20, 4 );
function reset_order_paid_date( $order_id, $old_status, $new_status, $order ) {
// Null paid date
if ( in_array( $old_status, array('on-hold', 'processing', 'completed') ) && 'pending' === $new_status ) {
$order->set_date_paid(null);
$order->update_meta_data( '_reseted_paid_date', true ); // Add a custom meta data flag
$order->save();
}
// Set paid date back when the paid date has been nulled on 'processing' and 'completed' status change
if( $order->get_meta('_reseted_paid_date' ) && in_array( $new_status, array('pending', 'on-hold') )
&& in_array( $new_status, array('processing', 'completed') ) )
{
$order->set_date_paid( current_time( 'timestamp', true ) );
$order->delete_meta_data( '_reseted_paid_date' ); // Remove the custom meta data flag
$order->save();
}
}
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。