Me gustaría saber cómo puedo reescribir una URL de búsqueda que también contenga una var de consulta adicional en un enlace permanente con wp_redirect
y el gancho template_redirect
.
Tomé el código del complemento Nice Search que funciona bien para cambiar 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 que los visitantes limiten la búsqueda para un tipo de mensaje particular. Esto agrega una var. post_type
query, por ejemplo, %código%. Me gustaría que esto tuviera una URL como http://example.com?s=africa&post_type=features
.
El código de Nice Search hace que se pierda la variable de consulta post_tipo. 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 http://example.com/search/africa/section/features
.
¿Hay alguna forma de mantener el término de búsqueda y la consulta var en un buen enlace permanente?
Gracias Simon