Saya telah membangun tema untuk dealer mobil. Setiap mobil adalah jenis pos kustom ("kendaraan"), dan memiliki sekitar 12 bidang khusus dengan hal-hal seperti Merek, Model, Jarak Tempuh, Jenis Bahan Bakar, dll. Dll.
Jadi pada dasarnya di halaman rumah saya ingin formulir pencarian yang memiliki daftar drop-down untuk Make & Model dan berisi Makes atau Model yang tersedia.
Saya juga ingin memiliki 2 opsi untuk Tahun, sehingga pengguna akhir dapat memilih "2006" dan "2012" dan hasil pencarian berisi semua kendaraan dengan tahun antara dua angka tersebut.
Apakah ada plugin di luar sana yang bisa melakukan ini ??
Terima kasih atas bantuannya .. ini telah membuatku gila selama berjam-jam !!!!
custom-post-types
search
absdigital
sumber
sumber
Jawaban:
Langkah 1
Mulailah dengan membuat Formulir Pencarian Lanjutan yang Anda inginkan pengguna Anda akan berinteraksi dengan situs web, dan menyimpannya dengan nama (yaitu saya menyimpannya sebagai
advanced-searchform.php
- tetapi jangan menyimpannya dengansearchform.php
itu maka itu akan menggantikan formulir pencarian default WordPress ' ):Kemudian panggil formulir ke templat Anda seperti berikut:
Sekarang formulir pencarian Anda sudah siap, dan sekarang Anda dapat menggunakan formulir pencarian dan dapat mengambil input pengguna ke dalam URL.
Langkah 2
Yang Anda butuhkan adalah: query database dan query tipe posting dan bidang kustom sesuai permintaan pencarian . Ingat permintaan pencarian Anda sekarang adalah URL yang Anda dapatkan setelah pengiriman formulir. Sekarang minta WordPress untuk memuat halaman hasil pencarian kustom Anda ketika formulir dikirimkan. Tempatkan fungsi berikut ke dalam Anda
functions.php
sehingga akan mengaktifkan templat pencarian khusus Anda alih-alih defaultsearch.php
:Saya membawa kode dari WPSE (saya lupa root), tetapi ada kontroversi menggunakan kode di atas. Tapi itu benar-benar berfungsi ( tentu saja alasan yang lemah ).
Periksa cara lain yang disarankan @GM.
Langkah 3
Buat file baru dan simpan dengan
advanced-search-result.php
(karena kami menggunakan nama inifunctions.php
) dan sekarang Anda bebas - jelas. Konsepnya adalah:WP_Query()
(jika permintaan Anda kompleks maka gunakan$wpdb
permintaan),Sampel dapat berupa:
Jadi, inilah hal terakhir Anda. Namun masih ada banyak tantangan:
$wpdb
kueri SQL khusus untuk hasil pencarian yang kompleks dan itu akan menjadi MySQL murni - WordPress tidak ada di sana.page.php
(atausearch.php
) templat dan membuat halaman ini berdasarkan itu.Jadi, Anda punya ide, sekarang giliran Anda untuk menjelajahi dan menemukan jalannya . Ingat, cara setiap orang berbeda. Buat milikmu, supaya aku bisa mengikutimu. :)
sumber
WP_Query()
parameter bidang khusus menggunakan dan loop hasil untuk menunjukkan<option>
s.pre_get_posts
hook dan bukan loop sekunder.Meskipun jawaban @ MayeenulIslam dapat bekerja, saya pikir cara yang benar untuk melakukan pencarian lanjutan adalah dengan menggunakan
pre_get_posts
kait tindakan.Langkah 1: Formulir Pencarian
Langkah ini sama dengan langkah 1 dalam jawaban lain, hanya mengubah
id
dariname
lapangan (<input type="text" ...>
yang digunakan untuk pencarian untuk "s" , sehingga akan digunakan langsung untuk sebagai kolom pencarian. Simpan kode ini diadvanced-searchform.php
bawah folder tema Anda. Kemudian, gunakanget_template_part( 'advanced', 'searchform' );
untuk muat di tempat yang Anda inginkan muncul di tema Anda:Langkah 2: Tambahkan filter ke permintaan pencarian
Langkah 3: Templating (opsional)
Dengan metode ini, templat pencarian default WordPress akan digunakan untuk memfilter hasil tanpa perlu kueri sekunder. Jika Anda ingin menggunakan templat yang berbeda untuk pencarian lanjutan, Anda dapat menggunakan
template_include
filter. Misalnya, jika Anda ingin menggunakanadvanced-search-template.php
file sebagai templat untuk hasil dari formulir pencarian lanjutan:sumber