填写您的邮件地址,订阅我们的精彩内容:

WordPress将搜索结果URL改为/search/keywords的形式

642

对于一些朋友而言,对URL非常敏感,希望得到最符合心意的URL形式。而本文试图解决修改搜索结果的URL,以让大家满足这种渴望。

在实现之前,我们需要用到:

  1. add_rewrite_rule()路由地址
  2. 修改search_form

那么接下来我们就来一步一步的实现这个过程。

1、在你的主题文件functions.php中增加下面的这个语句:

add_rewrite_rule('^search/([^/]*)','index.php?s=$matches[1]','top');

2、进入后台,更新一下固定链接,刷新路由表,这样路由才会生效

这个时候,使用新的地址就可以访问搜索结果页了,例如我们可以用 utubon.com/search/多站点 来获得乌徒帮关于多站点的相关文章。

3、修改你的search_form。找到你的搜索框代码,有的是放在searchform.php中,有的直接放在其他主题文件里面,将<form>的提交动作进行阻止,我们可以使用jQuery来实现:

$('form.search').submit(function(){
  var $this = $(this),$search = $this.find('input[name=s]'),$value = $search.val();
  window.loaction.href = '/search/' + $value;
  return false;
});

这样就可以让你的搜索框在搜索的时候直接进入到路由好的地址。

可能存在的问题:

  1. 搜索词中存在“/”怎么办?
  2. 末尾是否可以加“/”?
  3. 原来的?s=keywords的形式仍然可以访问,是否可以自动跳转到新地址?

如果搜索词中存在“/”,请先urlencode。末尾可以加“/”,只要按照上面的格式,稍加修改就可以了。如果你必须将?s=keywords跳转到新地址,那么在你的search.php开头增加一个判断:

if(isset($_GET['s']))wp_redirect(home_url('/search/'.$_GET['s']));

这样既可实现跳转,但我个人认为没有必要,搜索结果页应该直接写进robots.txt屏蔽。

下面我简单说几句