更改WordPress搜索的查询变量

时间:2013-07-29 作者:Joby Joseph

在wordpress中进行搜索时,url如下所示:

http://example.com?s=hello
但我使用s=查询变量还有另一个目的。因此,我希望将默认wordpress s s=更改为search=。

对于wordpress search,更新后的代码不应使用s=,而应只支持search=。

我尝试了来自http://demand.cr/2011/08/how-to-replace-the-default-search-query-parameter-in-wordpress/. 它可以工作,但同时接受s=和search=。我需要它只用于搜索=

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

找到的代码不是通过更改查询变量,而是通过将另一个变量转换为s WordPress期望的变量。

如果你看看WP_Query object, 那个s 参数非常深入地嵌入到核心功能中。

简单的解决方案,也许是唯一的解决方案,是为您的目的选择其他参数,而不是试图劫持硬编码为基本核心WordPress代码的参数。

SO网友:freejack

我在寻找相同的解决方案,但我找不到。原来问题中的链接不再起作用了,所以我不确定代码是怎样的。我就是这样做到的:

//Remove the default search var and add a custom one
add_filter(\'init\', function(){
    global $wp;
    $wp->add_query_var( \'search\' );
    $wp->remove_query_var( \'s\' );
} );

//If the custom var is passed copy that over to the default "s" var
add_filter( \'request\', function( $request ){
    if( isset( $_REQUEST[\'search\'] ) ){
        $request[\'s\'] = $_REQUEST[\'search\'];
    }
    return $request;
} );
我已经用默认搜索和WooCommerce搜索对此进行了测试,它对这两种搜索都有效。将代码添加到函数后。php还需要更改所有搜索表单,以使用新的查询变量,而不是输入字段中的“s”:

<input type="search" class="search-field" placeholder="Search …" value="" name="search">

结束

相关推荐

Search Form Not Working

我使用的是基于2012主题的,我使用的是下面的脚本(是的,我知道包装器还不正确)。但是,它默认返回主页。有什么想法吗?<?php /** * The template for displaying Search Results pages. * */ get_header(); ?> <section id=\"primary\" class=\"site-content\"> <div id=\"conten