变更搜寻网址

时间:2019-05-02 21:58:39

标签: php wordpress

我正在尝试将WordPress搜索URL更改为一些用户友好的URL。

我当前的搜索网址如下:

?s=fim&post_type%5B%5D=post&post_type%5B%5D=blog

我在哪里过滤搜索并仅从post_type获得帖子:帖子和博客。

我已经尝试了这两种方法:

functions.php

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

add_action( 'template_redirect', 'wpb_change_search_url' );

.htaccess

# Change WordPress search URL
RewriteCond %{QUERY_STRING} \\?s=([^&]+) [NC]
RewriteRule ^$ /search/%1/? [NC,R,L]

但是这两个重定向页面并使我失去了post_type过滤器。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

function foo_modify_query_order( $query ) {

    if( is_admin() )
        return;

    if( is_search() && $query->is_main_query() ) {
        $post_type = array('resource');
        $query->set('post_type', $post_type);
        $query->set( 'orderby', 'date' );
        $query->set( 'order', 'DESC' );
        $query->set('posts_per_page', -1);
    }
}
add_action( 'pre_get_posts', 'foo_modify_query_order' );

此查询将从“ blog”和“ post”帖子类型中过滤帖子。