我希望在正常工作时间(周一至周五上午8点至下午4点(将订单状态从处理更改为完成。
我有以下代码,它可以工作,但经常停止工作
date_default_timezone_set('Europe/London');
$is_week_days = in_array( date('w'), array( 1, 2, 3, 4 ) ) ? true : false; // From Monday to Thursday
$is_friday = date('w') == 5 ? true : false; // Friday
$is_week_end = in_array( date('w'), array( 0, 6 ) ) ? true : false; // Weekend days
$start_time = mktime('08', '00', '00', date('m'), date('d'), date('Y')); // 8am
$end_time = mktime('16', '00', '00', date('m'), date('d'), date('Y')); // 4pm
$now_time = time();
$after_tomorow = date('l', strtotime('+2 days'));
if (($is_week_days || $is_friday) && ($now_time >= $start_time && ($now_time < $end_time))) {
$working_hours = 1;
} else {
$working_hours = 0;
}
if ($working_hours == 1 && $status != "completed") {
$order->update_status( 'completed' );
return;
} else {
return;
}
这是一个更大功能的一部分,该功能在下单后触发。
有没有一种更简单的方法可以通过functions.php实现这一点?
谢谢!
正如Dave S所评论的Where does this code run now?
,正如我所看到的,您的代码看起来不错,但它可以改进得更好,所以我对您的代码进行了一点修改。
首先,您在相同的条件下添加了$is_week_days
和$is_friday
,因此您只需将第5
天添加到$is_week_days
天即可查看周五。
在这种情况下,您添加了额外的圆形胸罩($now_time < $end_time)
并且,您可以在工作日条件下查看此$status != "completed"
案例。
$is_week_days = in_array( date('w'), array( 1, 2, 3, 4, 5 ) ) ? true : false; // From Monday to Friday
$start_time = mktime( '08', '00', '00', date('m'), date('d'), date('Y') ); // 8am
$end_time = mktime( '16', '00', '00', date('m'), date('d'), date('Y') ); // 4pm
$now_time = time();
if ( $is_week_days && ( $now_time >= $start_time && $now_time <= $end_time ) && $status != "completed" ) {
$order->update_status( 'completed' );
return;
}