Dag El Pablo,
Bedoel je een soort van Maintenance plugin? Of dat je webshop gesloten is? Waarom zou trouwens je online webshop gesloten zijn? Volgens mij kun je dit in WooCommerce ook aangeven dat je winkel open / dicht is.
Welke ecommerce oplossing gebruik je op dit moment?
Groet,
Thijs
–
-
Deze reactie is gewijzigd 3 jaren, 6 maanden geleden door Richard van Denderen. Reden: handtekening verwijderd
Hoi Thijs, neen, ik bedoel dat de fysieke winkel open of gesloten is. Stel dat de winkel open is van 10:00 tot 18:00. Ik ga op de website om 09:00 uur, dan zou er in de banner ‘Nu gesloten’ of zoiets moeten komen. Stel dat ik op de website kom om 13:00 uur, dan zou er in de banner ‘Nu open’ bijvoorbeeld moeten komen.
Groet
Pablo
Persoonlijk zou ik dit automatiseren door een php lus te schrijven die de server checkt hoe laat het is en een boolean terug geeft (open/dicht oftewel true/false). Scheelt je weer een nare plugin 🙂 ik wil je hierbij wel op gang helpen.
Hoi Ruud, graag 🙂 . Ik ken nog bijna niets van php en heb geen idee hoe ik dit voor mekaar kan krijgen…
Onderstaand script heb ik ooit eerder gemaakt voor een soortgelijke situatie. In de $times array dien je jouw openingstijden te verwerken in dezelfde opmaak.
De div (onderaan) gebruik je om aan te geven of je open of gesloten bent.
<?php //setting time array to determine if you're closed/open
date_default_timezone_set('Europe/Amsterdam');
$date = new DateTime;
?>
<?php
$times = array(
//'day' => '00:00 AM - 00:00 PM, 00:00 PM - 00:00 PM',
'mon' => '8:00 AM - 5:30 PM',
'tue' => '8:00 AM - 5:30 PM',
'wed' => '8:00 AM - 5:30 PM',
'thu' => '8:00 AM - 5:30 PM',
'fri' => '8:00 AM - 5:30 PM',
'sat' => 'closed',
'sun' => 'closed'
);
function compileHours($times, $timestamp) {
$times = $times[strtolower(date('D',$timestamp))];
if(!strpos($times, '-')) return array();
$hours = explode(",", $times);
$hours = array_map('explode', array_pad(array(),count($hours),'-'), $hours);
$hours = array_map('array_map', array_pad(array(),count($hours),'strtotime'), $hours, array_pad(array(),count($hours),array_pad(array(),2,$timestamp)));
end($hours);
if ($hours[key($hours)][0] > $hours[key($hours)][1]) $hours[key($hours)][1] = strtotime('+1 day', $hours[key($hours)][1]);
return $hours;
}
function isOpen($now, $times) {
$open = 0; // time until closing in seconds or 0 if closed
// merge opening hours of today and the day before
$hours = array_merge(compileHours($times, strtotime('yesterday',$now)),compileHours($times, $now));
foreach ($hours as $h) {
if ($now >= $h[0] and $now < $h[1]) {
$open = $h[1] - $now;
return $open;
}
}
return $open;
}
$now = time();
$open = isOpen($now, $times);
?>
<div class="opening-status <?php if ($open == 0) { echo "closed"; } else { echo "open"; } ?>">Wij zijn <?php if ($open == 0) { echo "gesloten"; } else { echo "open"; } ?>.</div>