প্লাগইন ছাড়াই কীভাবে অনুসন্ধানের পদগুলি হাইলাইট করবেন


15

প্লাগইন ছাড়াই কীভাবে আমি অনুসন্ধানের পদগুলি হাইলাইট করতে পারি?

উত্তর:


14

এই 2 ফাংশন আপনার ফাংশন.এফপি যোগ করুন

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;
}

সম্পাদনা:

আপনার অনুসন্ধানের ফলাফলের জন্য_সামগ্রী ব্যবহার করতে নীচের ফাংশনটি ব্যবহার করুন:

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>';
    }

আপনার লুপে বা অনুসন্ধানের <?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 () একটি খালি স্ট্রিং ফিরিয়ে দেয়
মওর বড়জানি

1
সেগুলি এর পরিবর্তে the_excerptএবং the_contentতার জন্য ফিল্টার হওয়া উচিত । যাইহোক: দুর্দান্ত উত্তর, তবে @ জিয়ার্টের মন্তব্যটিতে কাজ করা যেতে পারে :)
কায়সার

1
এটি আমাদের রিডমোর লিঙ্কে <strong class = "অনুসন্ধান-হাইলাইট"> কোড প্রয়োগ করে এটির যদি অনুসন্ধান শব্দ থাকে তবে আমরা কীভাবে এটি সমাধান করতে পারি।

1
এটি রিডমোর হেরেফের পাঠ্যটিও প্রতিস্থাপন করছে? কিভাবে এটি ঠিক করবেন?
নবীন

3

উপরেরটি ভালভাবে কাজ করে আমি একই কোডটি চালিয়েছি, তবে শিরোনাম এবং অংশটি এক সাথে বেঁধেছি। কিন্তু যখন অনুসন্ধান অনুসন্ধান শব্দের শুরুর বা শেষের দিকে কেউ একটি স্পেসে প্রবেশ করে তখন এটি ভেঙে যায়।

সুতরাং আমি এই লাইন যুক্ত করুন:

$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

উপরের সমাধানগুলি যদি এইচটিএমএল ট্যাগের মধ্যে অনুসন্ধান শব্দটি উপস্থিত হয় তবে পৃষ্ঠাটি ভেঙে যায়। আপনার কিছু ব্যবহার করা উচিত:

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

1
থ্যাঙ্কস সাথী আপনি আমার দিনটি তৈরি করেছেন :-)
আঘা উমির আহমেদ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.