Hace algunas actualizaciones Dokan introduce una función para que los vendedores puedan establecer el horario de apertura y cierre de su tienda. Sin embargo, esta nueva funcionalidad no hace nada más que mostrar el horario comercial de los vendedores. Si quiere bloquear el proceso de añadir al carrito o de pago, cuando un vendedor e.g. un restaurante está cerrado, necesitará un código personalizado. El siguiente código mostrará a sus clientes un mensaje de error cuando quieran pagar con productos de un vendedor que esté cerrado. Coloque eso en sus funciones.php de su tema hijo.add_action( ‘woocommerce_checkout_process’, ‘check_shop_open’ );add_action( ‘woocommerce_check_cart_items’ , ‘check_shop_open’ );function comprobar_tienda_abierta() { $vendorId=false; // Establecer ID de vendedor basado en los artículos del carrito $cartItems=WC()->carro->get_cart(); foreach ( $cartItems as $cartItemKey => $cartItem ) { $vendorId =get_post_field( ‘post_author’, $cartItem[‘product_id’] ); $vendorInfo=dokan_get_store_info( $vendorId ); }si(!$vendorId) {volver;}si(empty($vendorInfo)) {volver;}si(!isset($vendorInfo[‘dokan_store_time’]) || empty($vendorInfo[‘dokan_store_time’]) ) {volver;}// Obtenga todos los horarios de apertura de los vendedores$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])) {volver;}// Establecer el horario de apertura actual del vendedor diurno$storeOpeningHoursCurrentDay=$storeOpeningHours[$currentDay];// Tienda cerrada hoysi(isset($storeOpeningHoursCurrentDay[‘status’]) && $storeOpeningHoursCurrentDay[‘status’] == “cerrar”) { show_cart_checkout_message( sprintf( __(‘Oh lo siento. %s está cerrado hoy! Por favor, vuelva otro día.’, ‘flatsome-child’), $vendorName ); devolver falso;}// Tienda no abiertasi(isset($storeOpeningHoursCurrentDay[‘opening_time’]) && !empty($storeOpeningHoursCurrentDay[‘opening_time’])) {$storeOpeningHoursCurrentDayOpeningTime=$storeOpeningHoursCurrentDay[‘opening_time’];$storeOpeningHoursCurrentDayOpeningTimeObject=DateTime::createFromFormat(‘H:i’, $storeOpeningHoursCurrentDayOpeningTime, $wpTimezone);si($fechaactual