WordPress伪静态url链接搜索怎么设置?

青丝 1,047 阅读 1

何为搜索伪静态?

众所周知,WordPress 默认搜索地址为 https://blog.xiaohuaduanzi.cn/?s=WordPress 这是一个动态地址,和全站伪静态有点格格不入,而且还不利于静态缓存。那怎么样可以弄成https://blog.xiaohuaduanzi.cn/search/WordPress/ 这样的形式呢?
很简单,将以下代码加入到主题下的 functions.php 当中即可:

//默认搜索伪静态
function wp_search_url_rewrite() {
    if ( is_search() && ! empty( $_GET['s'] ) ) {
        wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( 's' ) ) . "/");
        exit();
    }
}
add_action( 'template_redirect', 'wp_search_url_rewrite' );

改搜索框
现在去前台搜索,就会发现结果会跳转到【/search/关键词】了。当然,为了让搜索直接进入这个页面,而不是要301跳转,我们可以稍微改造一下这个搜索框。

常规搜索框代码一般如下:

<div id="searchbar">
	<form method="get" id="searchform" action="//blog.xiaohuaduanzi.cn/">
		<input type="text" name="s" id="s" placeholder="输入搜索内容" />
		<button type="submit" id="searchsubmit">搜索</button>
	</form>
</div>

输入内容,点击搜索后就必然会跳到 ?s=keyword这个动态页面。所以,我们需要通过js代码来拦截这搜索动作,然后重新定义跳转地址,将代码如下修改即可:

<div id="searchbar"> <form method="get" id="searchform" action="//blog.xiaohuaduanzi.cn/search/">
    <input id="wp_search" placeholder="请输入搜索内容" onkeydown="if(event.keyCode==13){return Searcher('wp');}">
    <button type="submit" id="searchsubmit" onclick="return Search('wp');">搜索</button>
</form>
</div>
<script type="text/javascript">
function Search(){
    var value=$("#wp_search").val()||"";
    window.open("https://blog.xiaohuaduanzi.cn/search/"+value+"/"); 
    return false;
}
</script>

PS
很简单的代码,原理就是给【搜索】动作绑定了一个js函数,而这个js函数的功能就是获取当前输入的关键词,并拼接成一个新的地址,最后跳转过去即可。

如此,就实现了WordPress默认搜索的伪静态化。很明显,这个方法适合任何WP主题。

其实这儿用Nginx或Apapche的伪静态规则来实现,性能会更棒!后面再研究折腾一下。

相关推荐
热门推荐
发表评论 取消回复
表情 图片

  1. 晴智依舒
    晴智依舒 Lv 1

    伪静态对seo好,原来的搜索引擎可能会搜索两个页面,虽然有跳转了,但还要刷新一下[aru_53] 查看图片

分享