站内搜索对于网站的优化也是非常重要的,一个良好的站内搜索可以帮助用户更快的找到网站内容,从而增加网站页面点击量而且适当的让搜索引擎收站内搜索结果页也可以增加网站引索量。下面小编就来教大家一步一步的优化搜索结果页。经常上薇晓朵 (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]