【问题标题】:Highlighting Word(s) Searched on in WordPress Search突出显示在 WordPress 搜索中搜索的单词
【发布时间】:2010-09-18 06:42:29
【问题描述】:

我正在使用内置的 WordPress search.php 例程,是否可以在检索到的搜索结果的上下文中突出显示搜索的单词?

例如,如果我输入“产品”,任何返回此匹配词的页面都会向用户突出显示。

谢谢。

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    这是一个您可以添加到functions.php的函数,它将在结果中突出显示搜索的词。

    /* Search Highlighting ********************************************/
    // This highlights search terms in both titles, excerpts and content
    
    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;
    }
    

    要使用此功能,必须将其添加到您的存档循环中:

    <?php if (is_search() ) { 
    
        search_excerpt_highlight(); } ?>
    

    【讨论】:

    • 嗨@Chris_O - 谢谢你,但我似乎无法让它工作。我在我的 function.php 文件中添加了这些函数,并在我的 style.css 文件中创建了一个背景颜色为黄色的类“search-highlight”,但没有任何反应。我需要从某个地方调用这些函数吗?谢谢。
    • @tonsils 我忘了包括如何将该功能添加到您的搜索循环中。请参阅上面的编辑。
    • @Chris_O,这很好用!除了一件事。它在“继续阅读”部分的 a-tag 的 URL 中捕获关键字。这会导致显示出现一些问题,因为它试图在 href 标记内添加一个强标记,因此它会在链接中显示 HTML 的 sn-p。关于如何解决这个问题的任何想法?谢谢!
    【解决方案2】: