将搜索URL更改为“Search”以外的内容

时间:2017-01-18 作者:MultiDev

为什么当我尝试更改搜索的URL时,如果设置为除search?

function bfm_pretty_search () {

    if (is_search() && !empty($_GET[\'s\'])) {
        wp_redirect(home_url(\'/search/\').urlencode(get_query_var(\'s\')));
        exit();
    }

}
add_action(\'template_redirect\', \'bfm_pretty_search\');
所以,不是url看起来像mydomain.com/search/query, 我希望它是:mydomain.com/results/query, 但除了“搜索”之外,它对其他任何东西都不起作用。。。为什么?

2 个回复
SO网友:Umer Shoukat

要更改此函数中的搜索url挂钩,这将替换“搜索”为您想要的任何内容。

add_action( \'init\', \'wpse21549_init\' );
function wpse21549_init()
{
    $GLOBALS[\'wp_rewrite\']->search_base = \'results\';
}
将此代码放入函数中。保存此文件后。转到永久链接设置页面,单击保存按钮刷新重写规则。

update

要修改搜索重写规则,可以挂接到search\\u rewrite\\u rules过滤器。您可以自己添加与帖子类型匹配的额外重写规则,也可以更改默认的“搜索重写结构”,使其也包括帖子类型,然后重新生成规则(有四个规则:一个是标准规则,一个是分页规则,两个是提要规则)。

add_filter( \'search_rewrite_rules\', \'wpse15418_search_rewrite_rules\' );
function wpse15418_search_rewrite_rules( $search_rewrite_rules )
{
    global $wp_rewrite;
    $wp_rewrite->add_rewrite_tag( \'%post_type%\', \'([^/]+)\', \'post_type=\' );
    $search_structure = $wp_rewrite->get_search_permastruct();
    return $wp_rewrite->generate_rewrite_rules( $search_structure . \'/section/%post_type%\', EP_SEARCH );
}

SO网友:davey

以上这些都不适合我。通过使用search\\u rewrite\\u rules筛选器覆盖搜索重写规则,找到了另一个解决方案。

1-将其添加到函数中。主题的php:

add_filter( \'search_rewrite_rules\', function($rules) {
    
     $new_rules = [];

     // New search slug here
     $new_search_slug = \'zoeken\';
    
     foreach ($rules AS $key => $value){
        
         $new_rules[str_replace(\'search\', $new_search_slug, $key)] = $value;
        
     }

     return $new_rules;

});
2-将永久链接保存在设置下的WordPress admin中->;Permalinks。

现在是页面https://www.mywebsite.com/zoeken/searchterm 正在显示搜索结果页面。

相关推荐

Wordpress Permalinks problem

Wordpress版本4.8(我不想使用4.9.1,因为模板页面属性有问题)我有个大问题。我读过很多解决方案,但对我来说并不适用。我正在创建一个自定义wordpress项目,一开始我的永久链接有问题。如果我使用“Plain”,这很好,但如果更改为例如“Date and time or something”,则会出现以下错误:我试着改变。htaccess,但看起来不错,这是我的。htaccess# BEGIN WordPress <IfModule mod_rewrite.c>