站內搜尋對於網站的最佳化也是非常重要的,一個良好的站內搜尋可以幫助使用者更快的找到網站內容,從而增加網站頁面點選量而且適當的讓搜尋引擎收站內搜尋結果頁也可以增加網站引索量。下面小編就來教大家一步一步的最佳化搜尋結果頁。經常上薇曉朵 (v7v3) 的朋友一定會發現在在薇曉朵使用站內搜尋有一定機率會直接跳入文章內容頁而不是搜尋結果,其實這是因為只有一篇文章包含你所搜尋的內容所以才會直接跳入文章頁。

實現方法:

add_action('template_redirect', 'wxd_single_post');
function wxd_single_post() {
    if (is_search()) {
        global $wp_query;
        if ($wp_query->post_count == 1) {
            wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
        }
    }
}

將以上程式碼加入到當前的使用的主題 functions.php 檔案中即可。參考文章:WordPress 使用者體驗最佳化:當搜尋結果只包含一篇文章時則直接轉跳到文章

接下來是遮蔽搜尋結果頁中的一些不必要的內容,在 WordPress 搜尋結果頁中搜尋某些關鍵詞的時候可能會將:關於我們、聯絡我們等 page 型別的頁面也搜尋出來。但是這些內容一般都不是使用者所需要的,所以我們可以將這些內容從 WordPress 的搜尋結果頁剔除掉。

實現方法:

一、開啟當前的 functions.php 檔案並加入以下程式碼:

function is_type_page() {
global $post;
if ($post->post_type == 'page') {
return true;
} else {
return false;
}
}

二、開啟當前主題的搜尋結果頁檔案 (search.php)

找到

<?php while (have_posts()) : the_post(); ?>

並在這段程式碼後新增

<?php if (is_type_page()) continue; ?>

即可將所有 page 型別的頁面從搜尋結果頁中刪除了。

最後是搜尋結果的偽靜態,WordPress 的搜尋結果頁預設是"http://abc.com/?s=關鍵詞" 這種形式的,而且 WordPress 的後臺固定連結頁面也沒有提供搜尋結果頁的偽靜態選擇。那麼我們如何來對 WordPress 搜尋結果頁做偽靜態呢?其實很簡單隻需在 functions.php 檔案中加入一段程式碼即可。

function wxd_search_url_rewrite() {
    if ( is_search() && ! empty( $_GET['s'] ) ) {
        wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( 's' ) ) );
        exit();
    }
}
add_action( 'template_redirect', 'wxd_search_url_rewrite' );

加上以上程式碼後搜尋結果頁的連結就由 「http://abc.com/?s=關鍵詞」 這種形式變成了 「http://abc.com/search/關鍵詞」 這種形式的連結了。當然搜尋結果還可以透過 Rewrite(url 重寫) 來做偽靜態,程式碼如下:

RewriteCond %{QUERY_STRING} ?s=([^&]+) [NC]
RewriteRule ^$ /search/%1/? [NC,R,L]