Bagaimana saya bisa mendapatkan istilah pencarian disorot tanpa plugin?
15
Tambahkan 2 fungsi ini ke functions.php Anda
function search_excerpt_highlight() {
$excerpt = get_the_excerpt();
$keys = implode('|', explode(' ', get_search_query()));
$excerpt = preg_replace('/(' . $keys .')/iu', '<strong class="search-highlight">\0</strong>', $excerpt);
echo '<p>' . $excerpt . '</p>';
}
function search_title_highlight() {
$title = get_the_title();
$keys = implode('|', explode(' ', get_search_query()));
$title = preg_replace('/(' . $keys .')/iu', '<strong class="search-highlight">\0</strong>', $title);
echo $title;
}
Untuk menggunakan konten untuk hasil pencarian Anda gunakan fungsi di bawah ini:
function search_content_highlight() {
$content = get_the_content();
$keys = implode('|', explode(' ', get_search_query()));
$content = preg_replace('/(' . $keys .')/iu', '<strong class="search-highlight">\0</strong>', $content);
echo '<p>' . $content . '</p>';
}
Dalam loop Anda atau panggilan file search.php <?php search_title_highlight(); ?>
bukan <?php the_title(); ?>
dan gunakan <?php search_excerpt_highlight(); ?>
sebagai gantinya<?php the_excerpt(); ?>
Di css Anda tambahkan kelas sorot pencarian yang akan menyorot semua kata yang dicari dengan warna kuning.
.search-highlight {
background:#FFFF00
}
preg_quote()
untuk$keys
mencegah regex Anda meledak jika karakter khusus seperti tanda kurung atau tanda kurung.the_excerpt
danthe_content
sebagai gantinya. Pokoknya: Jawaban yang bagus, tetapi komentar dari @ Geert dapat dikerjakan :)Di atas berfungsi dengan baik saya sudah menjalankan kode yang sama, tetapi ikat judul dan kutipannya bersama-sama. Tetapi menemukan itu rusak ketika seseorang memasuki ruang "" baik di awal atau akhir dari istilah permintaan pencarian.
Jadi saya sudah menambahkan baris ini:
Semoga ini terbukti membantu orang lain.
sumber
Solusi di atas memecah halaman jika istilah pencarian muncul di dalam tag HTML. Anda harus menggunakan sesuatu seperti:
sumber