Rentiva v4.34.1 — Popüler Rotalar Tıklanabilir Kartlar
v4.34.0'ın üzerine küçük ama yüksek getiri sağlayan bir patch. Popüler Rotalar kartları artık tıklanabilir; karta tıklamak transfer arama formuna kalkış ve varış önceden doldurulmuş olarak deep-link yapıyor. Ziyaretçinin yolu "istediğim rotayı gör → arama formunu bul → yedi seçenek arasından aynı kalkış/varışı tekrar seç → tarih/saat ekle → gönder"den "rotaya tıkla → tarih/saat ekle → gönder"e iniyor.
Neden
Bir geri bildirim v4.34.0 yayına çıktıktan hemen sonra bariz boşluğu işaretledi: kartlar CTA gibi görünüyor ama dokunulabilir değil. Ana sayfada "İstanbul Havalimanı → Taksim · ₺850" gören kullanıcı içgüdüsel olarak karta uzanır, üç bölüm aşağıdaki arama formuna değil. v4.34.0 onları statik bir bilgi paneliyle baş başa bıraktı; v4.34.1 onu olması gereken conversion yüzeyine dönüştürüyor.
Ne değişti
Tüm kart tıklama hedefi
PopularRoutesShortcode::render_card artık <article>'ı <a class="mhm-popular-route-card-link"> içine sarıyor. href, filtrelenebilir bir taban URL'e karşı add_query_arg() ile inşa ediliyor (varsayılan: bölüm "Transfer arayın" linkiyle aynı hedef, o da home_url('/transfer/')'e fallback yapıyor).
<a class="mhm-popular-route-card-link"
href="https://example.com/transfer/?origin_id=73&destination_id=76"
aria-label="İstanbul Havalimanı (IST)'dan Taksim Ofis'e transfer arayın">
<article class="mhm-popular-route-card mhm-popular-route-card--featured" role="listitem">
...
</article>
</a>
CSS, anchor'da color: inherit; text-decoration: none yaparak kart görünümünün v4.34.0 ile aynı kalmasını sağlıyor; ek olarak :focus-visible { outline: 2px solid var(--mhm-pr-accent) } ile fare kullanıcılarını rahatsız etmeden klavye navigasyonu için görünür bir focus halkası ekliyor.
Deep-link ön-doldurma
TransferShortcodes::prepare_template_data() artık $_GET'ten origin_id ve destination_id parametrelerini okuyup (absint ile sanitize ederek) template'e $preselected_origin ve $preselected_destination olarak iletiyor. transfer-search.php template'i her iki select için <option>'lara selected() çağrıları kazandı.
<option value="<?php echo esc_attr((string) $loc->id); ?>"
<?php selected(isset($preselected_origin) ? (int) $preselected_origin : 0, (int) $loc->id); ?>>
<?php echo esc_html($loc->name); ?>
</option>
Geriye uyumlu: hiç ?origin_id=... URL'i almayan kurulumlar v4.34.0'la birebir aynı davranıyor (form boş select'lerle açılıyor, eskisi gibi). Değişiklik tamamen ekleyici — kırılma yok, migration yok.
Yeni filtre — mhm_rentiva_popular_routes_search_url
Kart link taban URL'i, bölüm "Transfer arayın" linkinden bağımsız olarak filtrelenebilir. Bölüm linkini özel bir landing page'e yönlendiren ama kartların direkt arama formuna deep-link yapmasını isteyen temalar bunu tek filtre diğerini ezmeden yapabilir.
// Kart tıklama hedefi = transfer arama shortcode sayfası
add_filter('mhm_rentiva_popular_routes_search_url', function () {
return home_url('/transfer-search/');
});
// Bölüm "Transfer arayın" link hedefi = düzenlenmiş katalog sayfası
add_filter('mhm_rentiva_popular_routes_view_all_url', function () {
return home_url('/tum-rotalar/');
});
Kart filtresi boş döndüğünde, link bölüm URL'ine fallback yapıyor; o da home_url('/transfer/')'e fallback yapıyor — sağlıklı varsayılanlar her seviyede.
Kart başına ARIA label
aria-label="İstanbul Havalimanı (IST)'dan Taksim Ofis'e transfer arayın"
Ekran okuyucular link odaklandığında anlamlı bir aksiyon duyuruyor. Arama motorları da linkin nereye gittiğine dair gerçek bir açıklama görüyor — ana sayfa SEO yüzeyi için faydalı.
Bölüm etiketi yeniden adlandırma
"Tümünü gör →" → "Transfer arayın →" (bölüm header'ında). Link her zaman transfer arama formuna yönlendiriyordu (rota katalog sayfasına değil), bu yüzden v4.34.0 etiketi yanıltıcıydı. Yeni etiket gerçeği yansıtıyor.
İlerideki bir v4.35.x sürümü gerçek bir rota-katalog sayfası ekleyebilir (ör. /transfer-rotalari/ tüm uygun rotaları liste halinde render eder); o noktada "Tümünü gör" etiketi dürüstçe geri dönebilir. Şu an için: reklamda doğruluk.
Testler
- PHPUnit: 837 → 840 (+3). Yeni testler: anchor wrapper'ın doğru CSS class ile var olduğunu, href'in hem
origin_idhemdestination_idquery parametrelerini taşıdığını,mhm_rentiva_popular_routes_search_urlfiltresinin taban URL'i override ettiğini ve bölüm header etiketinin yeniden adlandırıldığını assert ediyor. - PHPCS: 0 hata.
- Runtime smoke test (Chrome DevTools MCP): 6 kart render edildi, her biri doğru query-param href ve TR
aria-labelile bir anchor içinde sarılmış;/transfer/?origin_id=73&destination_id=76'a navigasyon form seçicilerinde "İstanbul Havalimanı (IST)" ve "Taksim Ofis"'i otomatik seçiyor.
Uyumluluk
- Lisans-server güncellemesi yok.
- Kırıcı değişiklik yok — v4.34.0 siteleri yerinde yükseltiliyor.
- Mevcut transfer-search gönderileri
$_GETparametreleri olmadan çalışmaya devam ediyor.
