Ana içeriğe geç

Rentiva v4.34.1 — Popüler Rotalar Tıklanabilir Kartlar

· 4 dakikalık okuma
MaxHandMade
Maintainer

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.

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.

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_id hem destination_id query parametrelerini taşıdığını, mhm_rentiva_popular_routes_search_url filtresinin 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-label ile 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 $_GET parametreleri olmadan çalışmaya devam ediyor.

GitHub release