Skip to content

Ikhtisar Chapter 16: Non-JS Fallback Search (Pencarian Tradisional)

Apa yang Dipelajari?

Cara membuat pencarian WordPress tradisional (tanpa JavaScript) sebagai fallback — termasuk form pencarian, halaman hasil, dan template parts untuk setiap post type.


Poin Utama

1. Mengapa Perlu Fallback?

99% pengunjung punya JavaScript aktif, tapi 1% tidak. Kita tetap perlu menyediakan cara mencari konten tanpa JS — lewat form HTML biasa.


2. Komponen yang Dibuat

FileFungsi
page-search.phpHalaman dengan form pencarian (untuk page dengan slug "search")
search.phpTemplate hasil pencarian (menggantikan index.php untuk URL ?s=kata)
searchform.phpForm pencarian reusable (dipanggil dengan get_search_form())
template-parts/content-{type}.phpTampilan per post type di hasil pencarian

3. Form Pencarian

html
<form action="<?php echo esc_url(site_url('/')); ?>" method="get">
  <input type="search" name="s" placeholder="What are you looking for?">
  <input type="submit" value="Search">
</form>
  • name="s" — huruf kecil, format standar WordPress untuk pencarian
  • method="get" — agar keyword muncul di URL (?s=kata)
  • esc_url() — fungsi keamanan untuk escape URL

4. Template Parts Dinamis

Di search.php, tampilan otomatis menyesuaikan post type:

php
get_template_part('template-parts/content', get_post_type());

WordPress mencari file content-{post_type}.php — misalnya content-professor.php, content-event.php, dll. Setiap post type bisa punya tampilan berbeda.


5. Keamanan (XSS Prevention)

Selalu escape output dari user input:

php
esc_html(get_search_query(false))  // untuk teks di HTML
esc_url(site_url('/'))             // untuk URL

Ikon search di header diubah dari <span> ke <a href="/search"> — jadi tanpa JS, klik tetap mengarah ke halaman pencarian. Dengan JS aktif, return false mencegah navigasi dan menampilkan overlay search.


Satu Kalimat

Chapter ini memastikan fitur pencarian tetap berfungsi tanpa JavaScript — dengan form HTML tradisional, template hasil pencarian per post type, dan praktik keamanan yang benar.