web-dev-qa-db-fra.com

Règles de réécriture d'URL pour une requête à plusieurs taxonomies

J'essaie de créer de jolies URL pour les liens interrogeant plusieurs taxonomies. J'utilise le plugin "Taxonomy drill-down", bien que l'utilisation principale soit maintenant intégrée @ le noyau a encore quelques fonctions utiles pour la création de modèles :)

Un exemple d'URL interrogeant plusieurs taxonomies (fonctionnant) serait: domain.com/?tax1=foo&tax2=bar

Mon objectif est d'avoir des liens tels que - domain.com/tax1/foo/tax2/bar - en traduisant l'exemple ci-dessus.

tax1/2 = nom de taxonomie

toto/bar = terme requis

Je suis tombé sur Exemples de WP Rewrites mais je pense que je crains avec ces modèles et quelque chose comme:

$newrules['tax1/(.*)/tax2/(.*)/'] = 'index.php?tax1=$matches[1]&tax2=$matches[2]';

ne semble pas fonctionner (c'est juste une partie de la fonction entière basée sur l'exemple de Wordpress)

Des idées? :)

3
netfreak

(.*) correspond à tout, donc il "dévorera" les caractères supplémentaires (c'est "gourmand"). Si l'URL est /tax1/foo/tax2/bar/, le premier (.*) sera foo/tax2/bar/; il ne reste donc plus rien pour la deuxième correspondance.

Au lieu de (.*), vous pouvez utiliser la version "non-gourmande" (.+?). Cela correspond autant que possible, mais gardez toujours le reste à l'esprit. Vous pouvez également utiliser la version encore plus stricte ([^/]+): elle correspondra à toutes les étapes jusqu'au prochain / - mais cela ne fonctionnera pas pour les catégories imbriquées. Par conséquent, /category/fruit/banana/tag/flies/ ne se divisera pas en fruit/banana et flies comme vous pouvez vous attendre.

Si vous voulez jouer avec les règles de réécriture, je vous recommande d’installer mon plug-in Rewrite analyzer . Il vous permet de voir les règles de réécriture actuelles et de jouer avec les URL pour voir quelles règles correspondent.

5
Jan Fabry