Je voudrais savoir comment je peux réécrire une URL de recherche qui contient également une var de requête supplémentaire dans un joli permalien utilisant wp_redirect
et le template_redirect
crochet.
J'ai pris le code du plugin Nice Search qui fonctionne très bien pour se changer http://example.com?s=africa
en 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();
}
}
Mais j'utilise une liste déroulante sélectionnée en combinaison avec le plugin Relevanssi pour permettre aux visiteurs de restreindre la recherche à un type de message particulier. Cela ajoute une post_type
requête var, par exemple http://example.com?s=africa&post_type=features
. Je voudrais que ceci ait quelque chose comme une URL http://example.com/search/africa/section/features
.
Le code Nice Search provoque la perte de la requête post_type var. J'ai donc essayé le code suivant:
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();
}
}
mais WordPress pense maintenant que le terme de recherche est africa/section/features
.
Existe-t-il un moyen de conserver le terme de recherche et la requête var dans un joli permalien?
Merci Simon
la source