Cómo bloquear el pago en Dokan cuando el vendedor está cerrado

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Close Popup

We use cookies to give you the best online experience. By agreeing you accept the use of cookies in accordance with our cookie policy.

Close Popup
Privacy Settings saved!
Privacy Settings

When you visit any web site, it may store or retrieve information on your browser, mostly in the form of cookies. Control your personal Cookie Services here.

These cookies are necessary for the website to function and cannot be switched off in our systems.

Technical Cookies
In order to use this website we use the following technically required cookies
  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec

Decline all Services
Save
Accept all Services