Je veux réécrire une URL et passer le chemin entier en tant que paramètre. Quelque chose comme:
www.example.com/csearch/foo1/bar1/foo2/foo3/bar4 => www.example.com/index.php?page_id=23&csearch=foo1/bar1/foo2/foo3/bar4
Le script sur page_id 23 analysera le contenu de csearch.
Le chemin après/csearch/varie en longueur. Il peut avoir 0 ou 30 niveaux.
J'ai une solution de travail pour un seul niveau
www.example.com/csearch/foo1 => www.example.com/index.php?page_id=23&filter=foo1
fonctionne bien avec les éléments suivants ajoutés à functions.php
function create_new_url_querystring() {
add_rewrite_rule('^csearch/([a-zA-Z-]*)/?$', 'index.php?page_id=23&filter=$matches[1]', 'top');
}
add_action('init', 'create_new_url_querystring');
Je crois que j'ai besoin d'une nouvelle expression rationnelle pour correspondre à tout le chemin, pas seulement au premier niveau.
Une idée sur la façon de résoudre mon problème?
Merci.
Un rapide Tweak à votre expression régulière. Vous ne capturez actuellement que des lettres avant le premier /
add_rewrite_rule('^csearch/(.*)$', 'index.php?page_id=23&filter=$matches[1]', 'top');
Notez lors de l'analyse que vous pouvez avoir ou non une barre oblique à la fin de votre valeur de filtre.