Gostaria de saber como posso reescrever um URL de pesquisa que também contenha uma consulta extra var em um link permanente usando wp_redirect
e o template_redirect
gancho.
Peguei o código do plugin Nice Search, que funciona bem para mudar http://example.com?s=africa
para 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();
}
}
Mas estou usando um menu suspenso de seleção em combinação com o plug-in Relevanssi para permitir que os visitantes limitem a pesquisa a um tipo de postagem específico. Isso adiciona uma post_type
consulta var, por exemplo http://example.com?s=africa&post_type=features
. Eu gostaria que isso tivesse uma URL parecida http://example.com/search/africa/section/features
.
O código Nice Search faz com que a consulta post_type var seja perdida. Então, eu tentei o seguinte código:
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();
}
}
mas o WordPress agora acha que o termo de pesquisa é africa/section/features
.
Existe uma maneira de manter o termo de pesquisa e a consulta var todos em um bom link permanente?
Obrigado Simon