Jolis permaliens pour les résultats de recherche avec une requête supplémentaire var
1 réponses
- votes
Pourmodifier les règles de réécriture de la recherche,vouspouvez vous connecter aufiltre search_rewrite_rules
. Vouspouvez soit ajouter vous-même les règles de réécriture supplémentaires qui correspondent auxtypes depublication,soitmodifier la "structure de réécriture de recherche"par défautpourinclure également letype depublication,puis régénérer les règles (ilexiste quatre règles: une standard,une avecpaginationet deuxpour les aliments). Parce que WP_Rewrite::generate_rewrite_rules()
génère des règles à chaque "niveau de répertoire" ,vous obtiendrez des règlespour /search/[keyword]/section/[post_type]/
,/search/[keyword]/section/
et /search/[keyword]/
. Vousn'avezpasbesoin de la règle dumilieu,mais celane vousferapas demal de la conserver.
add_filter( 'search_rewrite_rules', 'wpse15418_search_rewrite_rules' );
function wpse15418_search_rewrite_rules( $search_rewrite_rules )
{
global $wp_rewrite;
$wp_rewrite->add_rewrite_tag( '%post_type%', '([^/]+)', 'post_type=' );
$search_structure = $wp_rewrite->get_search_permastruct();
return $wp_rewrite->generate_rewrite_rules( $search_structure . '/section/%post_type%', EP_SEARCH );
}
Pour vérifier les règles,utilisez monplugin d'analyse de réécriture .
To modify the search rewrite rules you can hook into the search_rewrite_rules
filter. You can either add the extra rewrite rules that match post types yourself, or you can change the default "search rewrite structure" to also include the post type and then re-generate the rules (there are four rules: one standard, one with paging and two for feeds). Because WP_Rewrite::generate_rewrite_rules()
generates rules at every "directory level", you will get rules for /search/[keyword]/section/[post_type]/
, /search/[keyword]/section/
and /search/[keyword]/
. You don't need the middle rule, but it won't hurt to keep it in.
add_filter( 'search_rewrite_rules', 'wpse15418_search_rewrite_rules' );
function wpse15418_search_rewrite_rules( $search_rewrite_rules )
{
global $wp_rewrite;
$wp_rewrite->add_rewrite_tag( '%post_type%', '([^/]+)', 'post_type=' );
$search_structure = $wp_rewrite->get_search_permastruct();
return $wp_rewrite->generate_rewrite_rules( $search_structure . '/section/%post_type%', EP_SEARCH );
}
To check the rules, use my Rewrite analyzer plugin.
J'aimerais savoir commentje peux réécrire une URL de recherche qui contient également une variable de requête supplémentaireen unjoli lienpermanenten utilisant
wp_redirect
et le hooktemplate_redirect
.J'aipris le code duplugin Nice Search quifonctionnetrèsbien pour changer
http://example.com?s=africa
danshttp://example.com/search/africa
:Maisj'utilise unmenu déroulant de sélectionen combinaison avec leplugin Relevanssi pourpermettre aux visiteurs d'affiner la recherche à untype demessageparticulier. Cela ajoute une variable de requête
post_type
,parexemplehttp://example.com?s=africa&post_type=features
. Je voudrais que cela ait une URL quelque chose commehttp://example.com/search/africa/section/features
.Le code de Nice Searchentraîne laperte de la variable de requêtepost_type. J'ai doncessayé le code suivant:
mais WordPresspensemaintenant que leterme de rechercheest
africa/section/features
.Est-ilpossible de conserver leterme de rechercheet la variable de requête dans unjolipermalien?
Merci Simon