Seuraava koodinpätkä toimii erinomaisesti esimerkiksi ravintoloille jotka haluavat myydä ruokaa ulos ainoastaan ravintolan aukioloaikoina verkkokaupastaan.

Koodin tarkoituksena on ajastaa WooCommerce verkkokaupan toiminta siten, että käyttäjät voivat tilata tuotteita vain tiettyinä kellonaikoina ja päivinä.

Aukioloajat merkataan koodiin muodossa TUNNIT, MINUUTIT, SEKUNNIT. Jos kauppa on esimerkiksi auki klo 7 – 15 niin merkataan aukioloaikoihin vain 7 00 00 ja 15 00 00.

Ensimmäisessä $weekdays_open taulukossa asetetaan arkipäivien aukiolot. Jos haluat esimerkiksi, että kauppa on suljettuna keskiviikkoisin, yksinkertaiseti poista ’Wed’ taulukosta.

Seuraavaksi $weekends_open taulukko määrittää viikonloppujen aukioloajat, eli jos haluat, että kauppa on auki lauantain lisäksi sunnuntaina tulee sinun lisätä koodissa ”, ’Sun’ ” sen sisälle, jolloin koko koodi on $weekends_open = array( ’Sat’ , ’Sun’ );

Tämän jälkeen yksinkertaisesti katsotaan onko kauppa auki vai ei ja palautetaan WooCommercelle muuttuja $purchasable, joka kertoo ovatko tuotteet ostettavissa vai eivät. Jos asiakkaalla on ostoskorissa tuotteita poistetaan myös ne ostoskorista kokonaan.

Jotta asiakkaat eivät täysin hämmentyisi, miksi eivät voi ostaa tuotteita annetaan heille virhe ilmoitus kaupan ollessa suljettuna ja kerrotaan, että he voivat tilata tuotteita tiettynä päivänä tiettyyn kellon aikaan.

Koodi valmiina käyttöönottoa varten

/*
*
* Kaupan aukioloajan hallinta
* v1.1
* Author: Mainostoimisto Aate
* Website: https://aate.fi
*
*/

// Funktio joka palauttaa true / false sen mukaan onko kauppa auki vai ei
function is_store_open() {
    // Set Your shop time zone (http://php.net/manual/en/timezones.php)
    date_default_timezone_set('Europe/Helsinki');
	

    // Alla kaupan aukioloajat
	$weekdays_open = array( 'Mon', 'Tue', 'Wed', 'Thu', 'Fri' ); // Arkipäivät jolloin auki
	$weekends_open = array('Sat'); // Viikonlopun päivät jolloin auki
	if ( in_array( date( 'D' ), $weekdays_open ) ) { 
		$start_time = mktime('09', '00', '00', date('m'), date('d'), date('Y')); // 09:00:00
		$end_time   = mktime('20', '00', '00', date('m'), date('d'), date('Y')); // 20:00:00
		$now        = time(); // Current timestamp in seconds
		
		return ( $now >= $start_time && $now <= $end_time ) ? true : false;
	}	
	elseif ( in_array(date('D'), $weekends_open ) ) { 
		$start_time = mktime('14', '00', '00', date('m'), date('d'), date('Y')); // 14:00:00
		$end_time   = mktime('20', '00', '00', date('m'), date('d'), date('Y')); // 20:00:00
		$now        = time(); // Current timestamp in seconds
		
		return ( $now >= $start_time && $now <= $end_time ) ? true : false;
	}
	else {
		return false;
	}
}

// Estä ostaminen kun kauppa on suljettu
add_filter( 'woocommerce_variation_is_purchasable', 'disable_purchases_on_shop', 10, 2 );
add_filter( 'woocommerce_is_purchasable', 'disable_purchases_on_shop', 10, 2 );
function disable_purchases_on_shop( $purchasable, $product ) {
    // Estetään ostot kun kauppa on kiinni.
    if( ! is_store_open() )
        $purchasable = false;

    return $purchasable;
}


add_action( 'template_redirect', 'closing_shop_notice' );
function closing_shop_notice(){
    if ( ! ( is_cart() || is_checkout() ) && ! is_store_open() ) {
        // Store closed notice
		$weekdays_open = array( 'Mon', 'Tue', 'Wed', 'Thu', 'Fri' ); // Arkipäivät jolloin auki
		$weekends_open = array('Sat'); // Viikonlopun päivät jolloin auki
		if (in_array(date('D'), $weekdays_open)) {
			$time = "09:00";
			wc_add_notice( __("Verkkokauppamme aukeaa kello " . $time . " - Voit tilata tuotteita verkkokaupastamme klo 9 - 20."), 'error' );
		}
		elseif (in_array( date('D'), $weekends_open)) {
			$time = '14:00';
			wc_add_notice( __("Verkkokauppamme aukeaa kello " . $time . " - Voit tilata tuotteita verkkokaupastamme klo 14 - 20."), 'error' );
		}
		else {
			wc_add_notice( __("Verkkokauppamme aukeaa maanantaina klo 09:00."), 'error' );
		}
    }
}

Koodin ja sen selitteen tekijä on Toni Manninen Mainostoimisto Aatteelta.

Kun kaipaat verkkosivuston tai verkkokaupan toteuttajaa? Ota yhteyttä https://aate.fi/verkkosivut ja kysy lisää!

Kirjoittaja Jaakko Pöntinen

Yrittäjä for life. Välillä onnistuen, välillä epäonnistuen. En etsi loputtomiin vihreintä ruohoa vaan rakennan hyviä kokonaisuuksia monissa viitekehyksissä.

Lisää uusi kommentti

Sähköpostiosoitettasi ei julkaista.