Mi piacerebbe sapere come posso riscrivere un URL di ricerca che contiene anche una var di query extra in un bel permalink usando wp_redirect
e l' template_redirect
hook.
Ho preso il codice dal plug-in Nice Search che funziona bene per trasformarlo http://example.com?s=africa
in 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();
}
}
Ma sto usando un menu a discesa selezionato in combinazione con il plug-in Relevanssi per consentire ai visitatori di restringere la ricerca a un determinato tipo di post. Questo aggiunge una post_type
query var, ad es http://example.com?s=africa&post_type=features
. Vorrei che questo avesse un URL simile http://example.com/search/africa/section/features
.
Il codice Nice Search causa la perdita della query post_type var. Quindi ho provato il seguente codice:
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();
}
}
ma WordPress ora pensa che il termine di ricerca sia africa/section/features
.
C'è un modo per mantenere il termine di ricerca e la query var in un bel permalink?
Grazie Simone