Me gustaría saber cómo puedo reescribir una URL de búsqueda que también contiene una consulta extra var en un enlace permanente wp_redirect
y el template_redirect
gancho.
Tomé el código del complemento Nice Search que funciona bien para cambiarlo http://example.com?s=africa
a 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();
}
}
Pero estoy usando un menú desplegable de selección en combinación con el complemento Relevanssi para permitir a los visitantes limitar la búsqueda a un tipo de publicación en particular. Esto agrega una post_type
consulta var, por ejemplo http://example.com?s=africa&post_type=features
. Me gustaría que esto tenga una URL similar http://example.com/search/africa/section/features
.
El código Nice Search hace que se pierda la consulta post_type var. Así que probé el siguiente 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();
}
}
pero WordPress ahora piensa que el término de búsqueda es africa/section/features
.
¿Hay alguna manera de mantener el término de búsqueda y la consulta var todo en un enlace permanente agradable?
Gracias simon