被 Qiqiboy 刺激後,我陰差陽錯地折騰出了非外掛的 WordPress 高亮顯示關鍵詞及歡迎提示,但是這個搜尋關鍵詞高亮提示僅僅是針對來自 Google 、百度等搜尋引擎的訪客,貌似對用站內搜尋的朋友就有些不公平了,所以昨天考完試,我今天又馬不停蹄地折騰起來,誓言要把 WordPress 站內搜尋高亮顯示關鍵詞的功能搞定!結果,還真搞定了,哈哈~

無論是用 PHP 還是 Javascript 來實現 WordPress 站內搜尋高亮關鍵詞,都不可避免地會用到正規表示式,而偏偏這又是我的軟肋,汗顏~先是參考了網上流傳最多的 Jquery 實現站內搜尋高亮關鍵詞的方法,很可惜,這是一個老外的成果,完全沒有考慮到我們非英語為母語的國家,所以這個高亮方法僅支援英文單詞開頭的關鍵詞,用中文就杯具了。

所以最終還是參考了 Qiqiboy 的 WordPress 高亮搜尋結果+實現關鍵字前後截斷顯示。。。,他用的是 PHP 正規表示式的方法,最大的特點就是可以完美支援中文,而且比 Jquery 的方法執行速度也更快,最讓我喜歡的一點是,非外掛!哈哈~於是就拿來根據自己的主題修改了一番,方法如下:

在 WordPress 主題檔案的 search.php 搜尋結果檔案中的主迴圈中加入以下程式碼:

<?php
    $title = get_the_title();
    $content = mb_strimwidth(strip_tags(apply_filters(
'the_content', $post->post_content)), 0, 600,"......");
    $keys = explode(
" ",$s);
    $title = preg_replace(
'/('.implode('|', $keys) .')/iu','<span style="font-weight:700;background:#ffff00;"></span>',$title);
    $content = preg_replace(
'/('.implode('|', $keys) .')/iu','<span style="font-weight:700;background:#ffff00;"></span>',$content);
?>

呼叫高亮的標題用以下程式碼:

<?php echo $title; ?>

呼叫高亮的日誌內容用以下程式碼:

<?php echo $content;?>

就這樣,效果還是蠻不錯的,大家可以去我頭部導航右上角的站內搜尋輸入一些關鍵詞試試,中文的、英文的都可以。另外我的 PHP 實力很菜,這修改過程可能不太完美,而且以上程式碼是根據我自己主題的需要修改的,並不完全通用。大家有同樣需要 WordPress 站內搜尋關鍵詞高亮顯示功能的,可以直接去 Qiqiboy 的原文學習:http://www.qiqiboy.com/2010/07/16/WordPress-highlighted-keyword-search-results.html

最後貼一張站內搜尋關鍵詞高亮的截圖:

WordPress 站內搜尋高亮顯示關鍵詞