无法使自定义搜索固定链接在完全自定义的主题中工作。搜索字符串$_GET[‘s’]始终为空

时间:2020-09-08 作者:Subrata Sarkar

我正在学习构建一个完全定制的WordPress主题。我有一张搜索表

<form role="search" method="get" class="search-form" action="<?php echo home_url() ?>/">
   <input type="search" placeholder="Search &hellip;" value="" id="s" name="s" required />
   <button type="submit"><i class="fa fa-search"></i></button>
</form>
它呈现以下HTML:

<form role="search" method="get" class="search-form" action="http://local.devsite.com/">
   <input type="search" placeholder="Search &hellip;" value="" id="s" name="s" required />
   <button type="submit"><i class="fa fa-search"></i></button>
</form>
在我的search.php 模板,我目前有以下代码来检查是否一切都按预期工作:

if( empty( $_GET[\'s\'] ) ) {
    echo \'No search\';
    exit;
}

$s = $_GET[\'s\'];
echo $s;
当我跑步时http://local.devsite.com/?s=sedan, 我得到了$_GET[\'s\'] 完美打印在搜索页面上

但是,我希望URL如下所示:http://local.devsite.com/search/sedan, 所以我在我的主题中添加了以下代码functions.php 文件

function yd_change_search_url() {
    if (  is_search() && ! empty( $_GET[\'s\'] ) ) {
        wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( \'s\' ) ) );
        exit();
    }
}
add_action( \'template_redirect\', \'yd_change_search_url\' );
添加代码后,我重新保存Settings > Permalinks. 但当我跑的时候http://local.devsite.com/search/sedan, 我明白了No Search 搜索页面上的消息。

短语No Search$_GET[\'s\'] 根据我在中添加的以下代码遇到search.php 样板

if( empty( $_GET[\'s\'] ) ) {
    echo \'No search\';
    exit;
}

$s = $_GET[\'s\'];
echo $s;
我做错了什么?我正在跟踪this tutorial.

我的最终目标是构建一个包含多个查询字符串的URL,即
http://local.devsite.com/?s=sedan&mfg=2010&model=Mark%20X&cond=used,

重写后最终会转化为http://local.mydev.com/sedan/2010/mark-x/used

1 个回复
SO网友:Subrata Sarkar

我想出来了。错误在我的代码中search.php 模板文件。

我以前的代码是:

if( empty( $_GET[\'s\'] ) ) {
    echo \'No search\';
    exit;
}

$s = $_GET[\'s\'];
echo $s;
应该是这样的:

if( empty( get_query_var( \'s\' ) ) ) {
    echo \'No search\';
    exit;
}

$s = get_query_var( \'s\' );
echo $s;
由于URL中不再有文本查询字符串,它已被重定向到具有不同模式的新URL,因此我无法使用$_GET[\'s\']

相关推荐

当使用wp_Dropdown_Categories时,Get_Search_Form不包括搜索表单.php

我的searchform中有一个类别下拉列表。php,在Wordpress 4中编码。x、 这几年来一直没有问题。Wordpress 5.2出现了一个问题。我的searchform.php 包括用于搜索的修改表单和用于类别的下拉菜单,使用wp_dropdown_categories(). get_search_form() 无输出。一份searchform.php;<div> $args = array ( ...some arguments... );&#