Ana içeriğe geç

Rentiva v4.34.0 — Popüler Transfer Rotaları Vitrini

· 5 dakikalık okuma
MaxHandMade
Maintainer

Ana sayfanın artık VIP transfer rotaları için düzgün bir satış yüzeyi var. v4.34.0; A → B rota kartlarını (kalkış → varış, ortalama süre, mesafe, başlangıç fiyatı) gösteren [rentiva_popular_routes] shortcode + Gutenberg blok + Elementor widget üçlüsünü yayına alıyor — üç yüzey, tek kanonik renderer. Hangi rotaların görüneceğini kontrol etmek için admin tarafına yeni bir "🌟 Vitrine Koy" işaret kutusu eklendi.

Bu sürüm neden var

Rentiva'nın transfer modülü aylardır sessizce yetenekli: bayiler rota başına fiyat tanımlıyor, arama motoru uçları araç uygunluğuyla birleştiriyor, sepet hem sabit hem km bazlı fiyatlandırma yöntemlerini destekliyor. Ama ana sayfa bunlardan hiçbirini öne çıkarmıyordu. Kiralama pazaryerine gelen ziyaretçi, VIP transfer hizmetinin var olduğunu anlamak için arama formuna inmek zorundaydı — fiyatları görmek bir yana.

v4.34.0 bu boşluğu kapatıyor. Yeni bölüm landing page'de duruyor, en güçlü rotaları önce sabitliyor ve transfer müşterisinin "Rezervasyon yap"a tıklamadan önce sorduğu tek soruya cevap veriyor: ne kadar, ne süre, ne mesafe?

Sürümde neler var

Shortcode kanonik implementasyon. Gutenberg bloğu (mhm-rentiva/popular-routes) ve Elementor widget'ı (mhm_rentiva_popular_routes) ikisi de do_shortcode() ile shortcode'a delege ediyor — bu Rentiva'nın render parite kuralı: shortcode ile render ettiğin her şey üç yüzeyden de aynı şekilde render edilir. Drift yok, çift kod yolu yok.

Shortcode 16 attribute destekliyor:

AttributeVarsayılanAmaç
limit6Maksimum kart sayısı (Lite planlarda Mode::maxTransferRoutes() ile sınırlanır)
columns3Masaüstü grid sütun sayısı (2/3/4)
orderfeaturedfeatured / price_asc / price_desc / alphabetical / newest
heading"Popüler Rotalar"Bölüm başlığı (i18n)
subheading"En çok tercih edilen VIP transfer güzergahları"Alt başlık
show_view_alltrueHeader'da "Tümünü gör" linkini göster
view_all_urlboşLink hedefini override et (boşsa mhm_rentiva_popular_routes_view_all_url filtre kullanılır)
show_duration / show_distance / show_traffic_note / show_pricetrueEleman görünürlük anahtarları
currency_symbolFiyat ön eki
filter_origin_cityboşör. İstanbul
filter_origin_typeboşairport / train / hotel / marina / city_center
featured_onlyfalsetrue ise yalnızca sabitlenmiş rotalar render edilir
themelightlight / dark

Admin "🌟 Vitrine Koy" işaret kutusu

Transfer Rotaları admin formuna yeni bir checkbox: 🌟 Vitrine Koy (popüler rotalar bloğuna sabitle). Vitrindeki rotalar order="featured" (varsayılan) iken önce, featured_only="true" iken yalnızca render edilir. Liste tablosunda sabitlenmiş satırların yanında "🌟 Vitrin" rozeti görünür — admin gözle hangi rotaların ana sayfaya çıkacağını anında doğrulayabilir.

Kaydetme ve silme aksiyonları TransferRouteProvider transient cache'ini otomatik temizliyor; değişiklikler bir sonraki sayfa isteğinde canlıya geçiyor, manuel cache temizleme dansı gerek yok.

TransferRouteProvider repository

Popüler-rota sorguları için tek doğruluk kaynağı, mevcut LocationProvider pattern'i baz alınarak: 1 saatlik transient cache, JOIN tabanlı eligibility filtresi (kalkış ve varış ikisi de is_active=1 VE allow_transfer=1 olmalı), kompoze edilebilir filtre seti (şehir / tip / yalnızca-vitrin). Cache anahtarları tüm filtre setini hashliyor, böylece farklı shortcode çağrıları cache'i paylaşmıyor.

TransferRouteProvider::get_popular_routes([
'limit' => 6,
'order' => 'featured',
'featured_only' => false,
'filter_origin_city' => 'İstanbul',
'filter_origin_type' => 'airport',
]);

Satırlar JOIN'lenmiş kalkış/varış verisiyle nesne olarak dönüyor: origin_name, origin_city, origin_type, destination_name, destination_city, destination_type ve tüm rota kolonları (distance_km, duration_min, min_price, is_featured, vs.).

Veritabanı migration

{prefix}rentiva_transfer_routes tablosuna is_featured tinyint(1) NOT NULL DEFAULT 0 kolonu + index ekleniyor. Migration dbDelta kullanıyor ve idempotent — mevcut kurulumlar yerinde yükseltiliyor, downtime yok; mevcut şemada migration'ı tekrar çalıştırmak no-op.

Lite ve Pro

Lite planlar en fazla 3 kart render ediyor. Bu mevcut Mode::maxTransferRoutes() kotasıyla enforce ediliyor — Lite adminin kaç rota tanımlayabileceğini sınırlayan aynı kota. Pro planlar yapılandırılmış limit kadar (varsayılan 6) render ediyor. Shortcode'un resolve_limit() metodu min($requested, $tier_max); yani Lite sitede limit="20" attribute'u sessizce 3'e iniyor, hata fırlatmıyor.

Boş durum

Sessiz no-op. Filtrelere uyan rota olmadığında (veya tablo boş, veya tüm uygun uçlar pasif), bölüm hiç render edilmiyor — "Yakında..." placeholder yok, boş grid yok, console gürültüsü yok. Yeni kurulumlar temiz görünüyor; doldurulmuş siteler ne varsa onu öne çıkarıyor.

İki filter hook

// Tema/entegrasyonlar, view_all_url açıkça set edilmediğinde
// transfer arama URL'ini sağlar.
add_filter('mhm_rentiva_popular_routes_view_all_url', function ($url) {
return home_url('/transfer/');
});

// Verilen lokasyon tipi için gösterilen ikonu override eder.
add_filter('mhm_rentiva_popular_routes_type_icon', function ($icon, $type) {
return $type === 'airport' ? '🛫' : $icon;
}, 10, 2);

Testler ve kalite gate'leri

  • PHPUnit: 824 → 837 (+13). Yeni testler boş durum, tek/çoklu kart render, kalkış şehir + tip filtresi, vitrin sıralaması (önce sabitlenenler), fiyat-artan sıralama, aktif olmayan uçlar için gizli rotalar, süre/mesafe/fiyat görünürlük flag'leri ve geçersiz columns fallback'ini kapsıyor.
  • PHPCS: 0 hata. Değişen tüm dosyalarda composer phpcs temiz.
  • SchemaParityTest: 20 block.json dosyasına çıkarıldı, uçtan uca doğrulandı (block attribute isimleri AllowlistRegistry üzerinden kanonik shortcode attribute'larına round-trip yapıyor).
  • i18n: 35+ yeni TR çeviri — frontend kart etiketleri (Popüler Rotalar, Yaklaşık X dk, Trafiğe göre değişebilir, Başlangıç fiyatı), admin form (🌟 Vitrine Koy), tüm block + widget editör kontrolleri (Sıralama & Filtreler, Kart Görünümü panelleri). .pot yeniden üretildi, tr_TR.po msgmerge edildi, .mo ve .l10n.php yeniden derlendi.
  • Runtime smoke test: Chrome DevTools MCP üzerinden gerçek admin → frontend tur. Düzenleme formunda checkbox işaretle, kaydet, shortcode render eden bir sayfaya git, 6 kartın hepsini doğrula (4 vitrin önce sabitlenmiş), TR çevirileri doğru, CSS yüklü, sıfır console error.

Sırada ne var

Roadmap transfer dalgasıyla devam ediyor: v4.36.0 bağlam-farkındalı eklentiler ekliyor (mevcut vehicle_addon CPT'sini addon_context taxonomy ile genişleterek), v4.37.0 transfer lokasyonları için harita görünümü (başka bir projeden pinleme kodu portuyla). Sonra bayi dalgası başlıyor — bayi dizini sayfası (v4.38.0) ve uzun süredir ertelenen Phase 5 bayi profil sayfası (v4.39.0).

GitHub release