Изменить поисковый URL - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь изменить URL-адреса поиска в WordPress на несколько удобных для пользователя.

Мой текущий поисковый URL выглядит так:

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

Где я фильтрую поиск и получаю только сообщения из post_type: post и blog.

Я уже пробовал эти два метода:

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 Ответ

1 голос
/ 03 мая 2019
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'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...