Я хотел бы знать, как я могу переписать поисковый URL, который также содержит дополнительную переменную запроса в довольно постоянное использование ссылки wp_redirect
и template_redirect
ловушку.
Я взял код из плагина Nice Search, который отлично работает, чтобы перейти http://example.com?s=africa
на http://example.com/search/africa
:
add_action( 'template_redirect', 'my_rewrite' ) );
function my_rewrite() {
if ( is_search() and false === strpos( $_SERVER['REQUEST_URI'], '/search/' ) ) {
wp_redirect( get_bloginfo( 'home' ) . '/search/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 's' ) ) ) );
exit();
}
}
Но я использую выпадающий список в сочетании с плагином Relevanssi, чтобы позволить посетителям сузить поиск до определенного типа поста. Это добавляет post_type
запрос var, например http://example.com?s=africa&post_type=features
. Я хотел бы, чтобы это было что-то вроде URL http://example.com/search/africa/section/features
.
Код Nice Search приводит к потере var запроса post_type. Поэтому я попробовал следующий код:
function my_rewrite() {
if ( is_search() and false === strpos( $_SERVER['REQUEST_URI'], '/search/' ) ) {
if ( isset( $_GET['post_type'] ) and '' !== $_GET['post_type'] ) {
wp_redirect( get_bloginfo( 'home' ) . '/search/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 's' ) ) ) . '/section/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 'post_type' ) ) ) );
} else {
wp_redirect( get_bloginfo( 'home' ) . '/search/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 's' ) ) ) );
}
exit();
}
}
но WordPress теперь думает, что поисковый термин africa/section/features
.
Есть ли способ, которым я могу держать поисковый запрос и запрос var в хорошей постоянной ссылке?
Спасибо Саймон