Il y a quelques années, Dokan a introduit une fonction permettant aux vendeurs de définir les heures d’ouverture et de fermeture de leur magasin. Toutefois, cette nouvelle fonctionnalité ne fait qu’indiquer les heures d’ouverture des vendeurs. Si vous souhaitez bloquer le processus d’ajout au panier ou de paiement, lorsqu’un vendeur e.g. un restaurant est fermé, vous aurez besoin d’un code personnalisé. Le code ci-dessous affichera un message d’erreur à vos clients lorsqu’ils voudront passer à la caisse avec des produits provenant d’un vendeur qui est fermé. Place qui int vos fonctions.php de votre thème enfant.add_action( ‘woocommerce_checkout_process’, ‘check_shop_open’ ) ;add_action( ‘woocommerce_check_cart_items’ , ‘check_shop_open’ ) ;fonction check_shop_open() { $vendorId=false ; // Définir l’ID du vendeur en fonction des articles du panier $cartItems=WC()->cart->get_cart() ; foreach ( $cartItems as $cartItemKey => $cartItem ) { $vendorId =get_post_field( ‘post_author’, $cartItem[‘product_id’] ); $vendorInfo=dokan_get_store_info( $vendorId ) ; }si(!$vendorId) {retour ;}si(empty($vendorInfo)) {retour ;}si(!isset($vendorInfo[‘dokan_store_time’]) || empty($vendorInfo[‘dokan_store_time’]) ) {retour ;}// Obtenir toutes les heures d’ouverture des vendeurs$wpTimezone=wp_timezone() ;$vendorName=$vendorInfo[‘store_name’];$storeOpeningHours=$vendorInfo[‘dokan_store_time’];$dateFormat=’d.m.Y’ ;$currentDate=DateTime::createFromFormat($dateFormat, date($dateFormat), $wpTimezone) ;$currentDay=strtolower( $currentDate->format(‘l’) ) ;si(!isset($storeOpeningHours[$currentDay]) || empty($storeOpeningHours[$currentDay])) {retour ;}// Définir les heures d’ouverture actuelles du vendeur de jour$storeOpeningHoursCurrentDay=$storeOpeningHours[$currentDay];// Le magasin est fermé aujourd’huisi(isset($storeOpeningHoursCurrentDay[‘status’]) && $storeOpeningHoursCurrentDay[‘status’] == “fermer”) { show_cart_checkout_message( sprintf( __(‘Oh sorry. %s est fermé aujourd’hui! Veuillez revenir un autre jour.’, ‘flatsome-child’), $vendorName ) ) ; retourner faux ;}// Le magasin n’est pas ouvertsi(isset($storeOpeningHoursCurrentDay[‘opening_time’]) && !empty($storeOpeningHoursCurrentDay[‘opening_time’])) {$storeOpeningHoursCurrentDayOpeningTime=$storeOpeningHoursCurrentDay[‘opening_time’];$storeOpeningHoursCurrentDayOpeningTimeObject=DateTime::createFromFormat(‘H:i’, $storeOpeningHoursCurrentDayOpeningTime, $wpTimezone) ;si($currentDate