it-swarm.com.de

add_rewrite_rule und Paginierungsproblem

Ich habe ein Problem beim Schreiben einer korrekten Umschreiberegel.

Grundsätzlich sind hier die Beispiele für die URL, die ich möchte:

/myPage/mySuPage

Dann dasselbe mit Paginierung
/myPage/mySuPage/page/3

Dann die Grundseite, mit 2 Params, ohne Paginierung
/myPage/mySuPage/param1/param2

Dann die mit 2 Parametern und der Paginierung
/myPage/mySuPage/param1/param2/page/3

Mehr oder weniger, ich habe es für jeden Fall mit unterschiedlichen Regeln arbeiten, aber wenn ich sie in einer Reihe setzen, funktioniert nichts.

Hier sind die Regeln, die ich geschrieben habe:

add_rewrite_rule(
    'myPage/mySuPage/([^/]*)/([^/]*)/?',
    'index.php?pagename=myPage/mySuPage&param1=$matches[1]&param2=$matches[2]',
    'top' );

add_rewrite_rule(
    'myPage/mySuPage/([^/]*)/([^/]*)/page/([0-9]{1,})?',
    'index.php?pagename=myPage/mySuPage&param1=$matches[1]&param2=$matches[2]&pageds=$matches[3]',
    'top' );


add_rewrite_rule(
    'myPage/mySuPage/(.+?)(/page/([0-9]+))?/?$',
    'index.php?pagename=myPage/mySuPage&param1=$matches[1]&param2=$matches[2]',
    'top' );
2
Ludo

Ihre ersten beiden Umschreiberegeln enden nicht mit $, was darauf hinweist, dass die URL dort anhalten sollte. myPage/mySuPage/param1/param2/page/3 würde also immer noch mit dem ersten Muster übereinstimmen, da der /page/3-Teil am Ende einfach ignoriert werden kann. Die nächsten Umschreiberegeln werden dann nie verwendet.

Mit meinem Rewrite-Analysator-Plugin konnte ich Ihre Umschreibregeln auf diese beiden vereinfachen: eine ohne Parameter und nur optionales Paging und eine mit Parametern und optionalem Paging. Das Kombinieren dieser beiden zu einem funktionierte nicht, da die optionalen Parameter den Paging-Teil "auffressen" würden.

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&param1=$matches[1]&param2=$matches[2]&pageds=$matches[4]',
    'top'
);
6
Jan Fabry