J'ai un problème en écrivant une règle de réécriture correcte.
En gros, voici les exemples de l’URL que je veux:
/myPage/mySuPage
Puis la même chose avec la pagination/myPage/mySuPage/page/3
Ensuite, la page de base, avec 2 paramètres, sans pagination/myPage/mySuPage/param1/param2
Ensuite, celui avec 2 paramètres et la pagination/myPage/mySuPage/param1/param2/page/3
Plus ou moins, je le travaille avec différentes règles pour chaque cas, mais si je les mets dans une rangée, rien ne fonctionne.
Voici les règles que j'ai écrites:
add_rewrite_rule(
'myPage/mySuPage/([^/]*)/([^/]*)/?',
'index.php?pagename=myPage/mySuPage¶m1=$matches[1]¶m2=$matches[2]',
'top' );
add_rewrite_rule(
'myPage/mySuPage/([^/]*)/([^/]*)/page/([0-9]{1,})?',
'index.php?pagename=myPage/mySuPage¶m1=$matches[1]¶m2=$matches[2]&pageds=$matches[3]',
'top' );
add_rewrite_rule(
'myPage/mySuPage/(.+?)(/page/([0-9]+))?/?$',
'index.php?pagename=myPage/mySuPage¶m1=$matches[1]¶m2=$matches[2]',
'top' );
Vos deux premières règles de réécriture ne se terminent pas par $
, ce qui indique que l'URL doit s'arrêter là. Donc, myPage/mySuPage/param1/param2/page/3
sera toujours associé au premier motif, car il peut simplement ignorer la partie /page/3
à la fin. Les règles de réécriture suivantes ne seront alors jamais utilisées.
Avec mon plugin d’analyseur Rewrite j’ai pu simplifier vos règles de réécriture: un sans paramètres et une pagination facultative, et un avec des paramètres et une pagination en option. La combinaison de ces deux éléments en un ne fonctionnait pas, car les paramètres facultatifs "mangent" la partie de pagination.
add_rewrite_rule(
'myPage/mySuPage(/page/([0-9]+)?)?/?$',
'index.php?pagename=myPage/mySuPage&pageds=$matches[2]',
'top'
);
add_rewrite_rule(
'myPage/mySuPage/([^/]*)/([^/]*)(/page/([0-9]+)?)?/?$',
'index.php?pagename=myPage/mySuPage¶m1=$matches[1]¶m2=$matches[2]&pageds=$matches[4]',
'top'
);