如何重定向/搜索/到WordPress搜索模板?

时间:2016-03-03 作者:jchwebdev

我有一个典型的Wordpress网站,有一个使用典型GET格式的典型搜索页面模板

    <form id="searchform" action="http://example.com" method="get">
        <input id="s" type="text" name="s" placeholder="Search Again">
    </form>
为方便用户,我希望将以下url重定向到搜索页面模板:

http://example.com/search/
但因为没有/搜索页面或帖子,所以没有。它抛出了404。

所以我想要的是。。。

http://example.com/search/
。。。表现如下:

http://example.com/?s=
我该怎么做?

1 个回复
最合适的回答,由SO网友:Jevuska 整理而成

您可以使用template_redirect. 这里有一个简单的重定向函数。

add_action( \'template_redirect\', \'se219663_template_redirect\' );

function se219663_template_redirect()
{
  global $wp_rewrite;

  if ( is_search() && ! empty ( $_GET[\'s\'] )  )
  {
    $s         = sanitize_text_field( $_GET[\'s\'] ); // or get_query_var( \'s\' )
    $location  = \'/\';
    $location .= trailingslashit( $wp_rewrite->search_base );
    $location .= user_trailingslashit( urlencode( $s ) );
    $location  = home_url( $location );
    wp_safe_redirect( $location, 301 );
    exit;
  }
}
没有搜索查询的规则,如下所示(不要忘记转到永久链接设置刷新规则):

add_filter( \'search_rewrite_rules\', \'se219663_search_rewrite_rules\', 10, 1 );
function se219663_search_rewrite_rules( $rewrite )
{
  global $wp_rewrite;
  $rules = array(
    $wp_rewrite->search_base . \'/?$\' => \'index.php?s=\',
  );
  $rewrite = $rewrite + $rules;
  return $rewrite;
 }
并用空搜索查询重定向,只需使用isset,根据上面的代码修改即可。

add_action( \'template_redirect\', \'se219663_template_redirect\' );

function se219663_template_redirect()
{
  global $wp_rewrite;

  if ( is_search() && isset ( $_GET[\'s\'] )  )
  {
    $s         = sanitize_text_field( $_GET[\'s\'] ); // or get_query_var( \'s\' )
    $location  = \'/\';
    $location .= trailingslashit( $wp_rewrite->search_base );
    $location .= ( ! empty ( $s ) ) ? user_trailingslashit( urlencode( $s ) ) : urlencode( $s );
    $location  = home_url( $location );
    wp_safe_redirect( $location, 301 );
    exit;
  }
}

相关推荐

nothing happen in search form

我想创建搜索表单,但当我搜索时什么都没有发生,这是代码:索引。php: <div class=\"tech-btm\"> <?php get_search_form();?> </div> 搜索表单:<form role=\"search\" method=\"get\" id=\"searchform\" action=\"<?php echo home_url(\'/\')?>\"> &