如何重写WordPress搜索以在特定类别上工作

时间:2019-07-10 作者:XATA

我希望我的wordpress搜索可以在自定义搜索中的特定类别上工作,默认情况下,这实际上可以正常工作example.com/categoryname/?s=keyword

但我想让它像这样工作example.com/categoryname/search/keyword/

我有下面的代码,但它只适用于urlexample.com/search/keyword

function wp_change_search_url() {
    if ( is_search() && ! empty( $_GET[\'s\'] ) ) {
        wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( \'s\' ) ) );
        exit();
    }  
}
add_action( \'template_redirect\', \'wp_change_search_url\' );
但如果我尝试example.com/categoryname/search/keyword/ 我收到404错误页

请我需要帮助,我希望它在类别内工作。

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

您可以使用add_rewrite_rule():

add_action( \'init\', function(){
    // Non-paged requests. E.g. example.com/categoryname/search/keyword/
    add_rewrite_rule( \'^categoryname/search/([^/]+)/?$\',
        \'index.php?category=categoryname&s=$matches[1]\',
        \'top\' );

    // For paged requests. E.g. example.com/categoryname/search/keyword/page/2/
    add_rewrite_rule( \'^categoryname/search/([^/]+)/page/(\\d+)/?$\',
        \'index.php?category=categoryname&s=$matches[1]&paged=$matches[2]\',
        \'top\' );
} );

Be sure to flush the permalinks — simply visit the Permalink Settings page.

相关推荐

子目录中的HTAccess、站点和转移

我有以下任务,由于它与大多数设置略有不同,我找不到任何解决问题的提示。已将live站点的WordPress安装到子文件夹中/wp1, 这个.htaccess 指令是对www和https的重写,然后是通常的WP指令: <IfModule mod_rewrite.c> RewriteEngine On # rewrite any request to the certified domain to use www RewriteCond %{HTTP_HOST} !