自定义搜索结果中的自定义URL

时间:2015-06-20 作者:Tomas

我需要您在自定义搜索结果(Wordpress)中提供自定义URL的帮助。

我有这个URLhttp://domain.com/?s=&categories=489&locations=310 这会得到我的搜索结果。

我可以将ID替换为类别和位置“Slug”,如下所示

http://domain.com/find/category-in-location/ 并获得与旧URL地址相同的搜索结果。

注意:我在Wordpress中使用Yoast SEO插件。

感谢您的帮助与合作。

1 个回复
SO网友:James Barrett

通过使用template_redirect

function my_custom_search_url_rewrite() {
  if ( is_search() && ! empty( $_GET[\'s\'] ) ) {
    wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( \'s\' ) ) );
    exit();
  } 
}
add_action( \'template_redirect\', \'my_custom_search_url_rewrite\' );
然后您可以使用如下URLhttp://domain.com/search/category+location/.

如果你想改变search 进入find 您可以使用search_rewrite_rules 像这样过滤。

function my_custom_search_url( $search_rewrite ) {
  if( !is_array( $search_rewrite ) ) { 
    return $search_rewrite;
  }

  $new_array = array();

  foreach( $search_rewrite as $pattern => $s_query_string ) {
    $new_array[ str_replace( \'search/\', \'find/\', $pattern ) ] = $s_query_string;
  }

  $search_rewrite = $new_array;

  unset( $new_array );

  return $search_rewrite;
}
add_filter("search_rewrite_rules", "my_custom_search_url");
然后您可以使用如下URLhttp://domain.com/find/category+location/.

Note: 记住刷新或重新保存永久链接。

我相信,再进行一些修补,你可以更接近你所要求的,但这是我迄今为止所能接近的。

EDIT:抱歉忘了提。。。如果将函数用于search_rewrite_rules 过滤器您需要更改my_custom_url_rewrite 功能。

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

结束

相关推荐

Searching post types

是否可以从搜索表单中获取用户输入,使用该表单通过WP_Query 类,然后将用户重定向到页面模板以显示结果?例如假设您有一个搜索输入city, state 或zip 然后输入California,然后捕获该输入,然后使用WP\\U查询搜索自定义帖子类型“位置”。它会找到4个匹配的位置,然后重定向到“位置”页面,该页面将显示所有4个位置。你会怎么做?Note: 这不是家庭作业,而是客户端功能。是的,有插件,但由于这是如何定制的,以及他们希望它如何布局,它必须从头开始构建。