我创建的短代码有问题,用于拉取商店的营业时间并根据营业时间数组显示“营业”或“营业”状态。
我让它工作了,所以我曾经想过,但它似乎已经停止工作了。
替代方法要么不起作用,要么只是标记了错误。
我希望将其设置为欧洲/伦敦时间戳,因为该商店仅位于英国。有什么想法我可能在这里做错了吗?
在此期间,我会继续努力,但对我来说似乎很奇怪。
我知道我使用的原始代码基于这里的旧帖子(大约 6 岁),所以我想知道它是否可能是过时的 PHP。我们的服务器运行的是 PHP 7。
//open/closing times
function opening_times() {
ob_start();
$storeSchedule = [
'Sun' => ['10:00 AM' => '15:00 PM'],
'Mon' => ['10:00 AM' => '17:00 PM'],
'Tue' => ['10:00 AM' => '17:00 PM'],
'Wed' => ['00:00 AM' => '00:00 AM'],
'Thu' => ['10:00 AM' => '17:00 PM'],
'Fri' => ['10:00 AM' => '17:00 PM'],
'Sat' => ['09:00 AM' => '17:00 PM']
];
// current OR user supplied UNIX timestamp
$timeObject = new DateTime('Europe/London');
$timestamp = $timeObject->getTimeStamp();
// default status
$status = 'closed';
// get current time object
$currentTime = (new DateTime())->setTimestamp($timestamp);
// loop through time ranges for current day
foreach ($storeSchedule[date('D', $timestamp)] as $startTime => $endTime) {
// create time objects from start/end times
$startTime = DateTime::createFromFormat('h:i A', $startTime);
$endTime = DateTime::createFromFormat('h:i A', $endTime);
// check if current time is within a range
if (($startTime < $currentTime) && ($currentTime < $endTime)) {
$status = 'open';
break;
}
}
echo '<div><i class="far fa-clock fa-3x"></i><span class="open-times"><small>We are ' . $status . '</small><br>';
return ob_get_clean();
}
add_shortcode( 'open_times', 'opening_times' );
它在某种程度上起作用,因为状态不断显示为“已关闭”,如果商店未开放,这应该是默认状态。
它只是不再在任何时候显示为“打开”状态。当它符合开放时间的标准时,它应该显示为“开放”。
精慕HU