纯代码实现WordPress站内搜索页面URL静态化 – WordPress教程

王小优
王小优
王小优
231
文章
0
评论
2015年9月19日
评论
4,997 1515字阅读5分3秒

如何为WordPress站内搜索伪静态?众所周知,WordPress默认搜索地址为https://www.wangxiaoyou.com/?s=keyword,这是一个动态地址,和全站伪静态有点格格不入,而且还不利于静态缓存。所以我们很有必要把WordPress站内搜索页面URL变成伪静态。

纯代码实现WordPress站内搜索页面URL静态化 – WordPress教程

实现的方法很简单,只需要将以下代码加入到当前主题下的functions.php文件中即可:

  1. //搜索页面URL伪静态
  2. function wp_search_url_rewrite() {
  3.     if ( is_search() && ! emptyempty$_GET['s'] ) ) {
  4.         wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( 's' ) ) . "/");
  5.         exit();
  6.     }
  7. }
  8. add_action( 'template_redirect', 'wp_search_url_rewrite' );

现在去前台搜索,就会发现结果会跳转到https://www.wangxiaoyou.com/search/keyword了。当然,如果动手能力强的话,我们为了让搜索直接进入这个页面,而不是要 301 跳转,我们可以稍微改造一下这个搜索框。

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

  1. <div id="searchbar">
  2.     <form method="get" id="searchform" action="https://www.loowp.com/">
  3.         <input type="text" name="s" id="s" placeholder="输入搜索内容" />
  4.         <button type="submit" id="searchsubmit">搜索</button>
  5.     </form>
  6. </div>

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

  1. <div id="searchbar"> <form method="get" id="searchform" action="https://www.loowp.com/search/">
  2.     <input name="s" id="s" placeholder="请输入搜索内容" onkeydown="if(event.keyCode==13){return Searcher('wp');}">
  3.     <button type="submit" id="searchsubmit" onclick="return Search('wp');">搜索</button>
  4. </form>
  5. </div>
  6. <script type="text/javascript">
  7. function Search(){
  8.     var value=$("# s ").val()||"";
  9.     window.open("https://www.loowp.com/search/"+value+"/");
  10.     return false;
  11. }
  12. </script>

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

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

若文章图片、下载链接等信息出错,请在评论区留言反馈,博主将第一时间更新!如果喜欢,请打赏支持本站,谢谢大家!
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微博
  • 微博扫一扫
  • weinxin
王小优
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: