जवाबों:
इन 2 कार्यों को अपने functions.php में जोड़ें
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;
}
अपने खोज परिणामों के लिए the_content का उपयोग करने के लिए नीचे दिए गए फ़ंक्शन का उपयोग करें:
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>';
}
अपने पाश या search.php फ़ाइल कॉल में <?php search_title_highlight(); ?>
के बजाय <?php the_title(); ?>
और उपयोग <?php search_excerpt_highlight(); ?>
के बजाय<?php the_excerpt(); ?>
अपने सीएसएस में खोज-हाइलाइट क्लास जोड़ें, जो सभी खोजे गए शब्दों को पीले रंग में उजागर करेगी।
.search-highlight {
background:#FFFF00
}
the_excerpt
और के लिए फ़िल्टर होना चाहिए the_content
। फिर भी: अच्छा जवाब, लेकिन @Geert से टिप्पणी में काम किया जा सकता है :)
उपरोक्त अच्छी तरह से काम करता है मैंने समान कोड चलाया है, लेकिन शीर्षक को टाई और एक साथ अंश। लेकिन यह तब टूटता है जब कोई व्यक्ति किसी खोज क्वेरी पद के आरंभ या अंत में किसी स्थान पर प्रवेश करता है।
तो Ive इस लाइन को जोड़ते हैं:
$keys = array_filter($keys);
// Add Bold to searched term
function highlight_results($text){
if(is_search() && !is_admin()){
$sr = get_query_var('s');
$keys = explode(" ",$sr);
$keys = array_filter($keys);
$text = preg_replace('/('.implode('|', $keys) .')/iu', ''.$sr.'', $text);
}
return $text;
}
add_filter('the_excerpt', 'highlight_results');
add_filter('the_title', 'highlight_results');
आशा है कि यह दूसरों की मदद करने के लिए साबित हो।
यदि HTML शब्द के अंदर खोज शब्द दिखाई देता है तो उपरोक्त समाधान पृष्ठ को तोड़ देते हैं। आपको कुछ इस तरह का उपयोग करना चाहिए:
$regEx = '\'(?!((<.*?)|(<a.*?)))(\b'. implode('|', $keys) . '\b)(?!(([^<>]*?)>)|([^>]*?</a>))\'iu';
$text = preg_replace($regEx, '<strong class="search-highlight">\0</strong>', $text);
preg_quote()
लिए आवेदन करें$keys
।