Selamlar,
Bir catering firmasi var, yerel saate gore 17:00 ye kadar verilen siparisleri ertesi gun teslimat tarihi ve diledigi saati secilmesine izin veriliyor.
Fakat biz istiyoruz ki eger saat 17:00den sonra ise ertesi gunun tarihi secilmesine izin verilmesin.
Bunu custom kod veya eklenti ile yapabilecek arkadas varsa cozum sekli ve ucretiyle birlikte PM atabilir mi?
Wordpress Woocomerce uzmanlarindan yardim talebi
2
●162
- 10-10-2024, 02:39:54chatgpt
WooCommerce'de bu tür bir teslimat saat sınırlamasını uygulamak için, bir custom function (özel fonksiyon) yazmanız ve bunu temanızın functions.php dosyasına eklemeniz gerekiyor. Bu fonksiyon, sipariş verme zamanına göre teslimat tarihini ve saatini kısıtlayacaktır.
İlgili işlemleri adım adım anlatacağım:- Önce Zamanı Kontrol Etme: Siparişin saat 17:00'den önce mi yoksa sonra mı verildiğini kontrol etmeniz gerekecek. Bunu yaparken yerel saati kullanmak için WordPress'in tarih ve saat fonksiyonlarını kullanabiliriz.
- Teslimat Tarih ve Saat Seçimini Kısıtlama: Sipariş saati 17:00'den sonra ise, müşterinin teslimat tarihini seçmesini engelleyebilirsiniz.
// functions.php dosyasına ekleyin add_filter('woocommerce_checkout_fields', 'customize_delivery_date_based_on_time'); function customize_delivery_date_based_on_time($fields) { // Türkiye saat dilimini ayarlıyoruz date_default_timezone_set('Europe/Istanbul'); // Şu anki saat $current_hour = date('H'); $current_day = date('Y-m-d'); // Eğer saat 17:00'den sonra ise if ($current_hour >= 17) { // Teslimat tarih alanını bul ve sınırlamalar ekle $fields['shipping']['delivery_date']['custom_attributes'] = array( 'min' => date('Y-m-d', strtotime($current_day . ' + 2 days')) // Teslimat tarihi bugünden +2 gün olmalı ); } else { // Saat 17:00'den önce ise, ertesi gün seçilebilsin $fields['shipping']['delivery_date']['custom_attributes'] = array( 'min' => date('Y-m-d', strtotime($current_day . ' + 1 day')) // Ertesi gün seçilebilsin ); } return $fields; }
Açıklama:
- Bu kod, checkout sırasında sipariş veren müşterinin yerel saatine göre işlemi yapıyor. Eğer sipariş saati 17:00'den sonraysa, minimum teslimat tarihi ertesi gün yerine bir sonraki gün olarak ayarlanıyor.
- Eğer saat 17:00'den önce ise, müşteri ertesi gün teslimat seçimini yapabilir.
Uygulama:
- WordPress yönetim panelinizde Appearance (Görünüm) -> Theme File Editor (Tema Dosya Editörü) kısmına gidin.
- Sağ menüden functions.php dosyasını açın.
- Yukarıdaki kodu dosyanın sonuna ekleyin ve kaydedin.
- 10-10-2024, 02:51:46Merhaba belki işe yarar temanızı bilmiyorum
function disable_next_day_delivery_after_cutoff($available_dates) { date_default_timezone_set('Europe/Istanbul'); // Yerel saat dilimini ayarlayın $current_time = current_time('H:i'); $cutoff_time = '17:00'; // Saat 17:00 cutoff saati // Eğer saat 17:00'den sonra ise ertesi günün tarihini kaldır if ($current_time > $cutoff_time) { $tomorrow = date('Y-m-d', strtotime('+1 day')); if (($key = array_search($tomorrow, $available_dates)) !== false) { unset($available_dates[$key]); } } return $available_dates; } add_filter('woocommerce_delivery_dates_available', 'disable_next_day_delivery_after_cutoff');