प्लगइन के बिना खोज शब्द कैसे हाइलाइट करें


15

मैं प्लगइन के बिना हाइलाइट किए गए खोज शब्द कैसे प्राप्त कर सकता हूं?

जवाबों:


14

इन 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  
    }

3
कोष्ठक या कोष्ठक जैसे विशेष पात्रों के मामले में अपने रेगेक्स को उड़ने से रोकने के preg_quote()लिए आवेदन करें $keys
गीर्ट

1
उपयोगकर्ता द्वारा एकल पर क्लिक करने और पोस्ट के अंदर जाने के बाद खोज शब्द को उजागर करने के बारे में क्या? फिर get_search_query () एक खाली स्ट्रिंग लौटाता है
Maor Barazany

1
उन के बजाय the_excerptऔर के लिए फ़िल्टर होना चाहिए the_content। फिर भी: अच्छा जवाब, लेकिन @Geert से टिप्पणी में काम किया जा सकता है :)
kaiser

1
यह हमारे रीडमोर लिंक में <strong class = "search-highlight"> कोड लागू करता है, यदि इसमें खोज शब्द है, तो हम इसे कैसे हल कर सकते हैं।

1
यह readmore href में भी टेक्स्ट को बदल रहा है? इसे कैसे ठीक करें?
नवीन

3

उपरोक्त अच्छी तरह से काम करता है मैंने समान कोड चलाया है, लेकिन शीर्षक को टाई और एक साथ अंश। लेकिन यह तब टूटता है जब कोई व्यक्ति किसी खोज क्वेरी पद के आरंभ या अंत में किसी स्थान पर प्रवेश करता है।

तो 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');

आशा है कि यह दूसरों की मदद करने के लिए साबित हो।


2

यदि HTML शब्द के अंदर खोज शब्द दिखाई देता है तो उपरोक्त समाधान पृष्ठ को तोड़ देते हैं। आपको कुछ इस तरह का उपयोग करना चाहिए:

      $regEx = '\'(?!((<.*?)|(<a.*?)))(\b'. implode('|', $keys) . '\b)(?!(([^<>]*?)>)|([^>]*?</a>))\'iu';
      $text = preg_replace($regEx, '<strong class="search-highlight">\0</strong>', $text);

1
thanxs दोस्त आपने मेरा दिन बना दिया :-)
आगा उमैर अहमद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.