Problem mit add_rewrite_rule und Paginierung (paged und page query_vars)

Ich habe eine benutzerdefinierte Taxonomie namens location und möchte für jeden Begriff Abschnitte wie “news” und “marketplace” hinzufügen, sodass meine URL wie /location/montreal/news/ aussieht /location/montreal/news/

Es funktioniert einwandfrei, bis ich versuche, die Paginierung hinzuzufügen. Hier ist mein Code:

 add_action( 'init', 'region_rewrite' ); function region_rewrite() { global $wp; $wp->add_query_var( 'section' ); add_rewrite_rule( '^location/([^/]*)/([^/]*)/page/([0-9]+)/?', 'index.php?location=$matches[1]&section=$matches[2]&paged=$matches[3]', 'top' ); add_rewrite_rule( '^location/([^/]*)/([^/]*)/?', 'index.php?location=$matches[1]&section=$matches[2]', 'top' ); } 

Ich benutze das Rewrite Analyzer Plugin und es scheint, dass der query_vars Ort, der Abschnitt und die Seite mit dem richtigen Wert zugewiesen sind. Beim Versuch, auf eine Seiten-URL wie /location/montreal/news/page/2 zuzugreifen, erhalte ich jedoch einen 404-Fehler. Ich habe auch bemerkt, dass die Seitenvariable den Wert /2 . Ist es möglich, dass ich deshalb einen 404 nicht gefunden habe?

Jede Hilfe würde sehr geschätzt werden!

Solutions Collecting From Web of "Problem mit add_rewrite_rule und Paginierung (paged und page query_vars)"

Ich glaube, Sie könnten zuletzt die ausgelagerte add_rewrite_url so dass es zuerst überprüft wird. Andernfalls wird die seitenweise Version niemals eine Übereinstimmung erhalten, da die nicht seitenweise Version immer zuerst übereinstimmt. Sollte auch funktionieren, wenn Sie “top” von Ihren Argumenten entfernen.

Schauen Sie sich auch diese Seite an, um eine gute Möglichkeit zu finden, die 404 zu debuggen, wenn Sie mit einer benutzerdefinierten Umschreibung arbeiten: http://www.dev4press.com/2012/tutorials/wordpress/practical/debug-wordpress-rewrite-rules-matching/

Danke an Olivier. Mein eigenes Problem war, dass meine add_rewrite_url für Seiten, aber nicht für alle Beiträge gut funktionierte.

Es funktionierte für Posts, wenn nur %postname%/ in permalink setup verwendet wurde. Ich habe das Bit nach der Post-URL verloren, wenn ich /%category%/%postname%/ dh http://me.com/test/post/my-next-bit-that-url-rewrite-should-act-on hielt 301 aufgrund des kanonischen Verhaltens von WordPress auf http://me.com/test/post/my-next-bit-that-url-rewrite-should-act-on

Die folgende Zeile stoppte dieses Problem.

 remove_filter('template_redirect', 'redirect_canonical'); 

Ich denke, es sollte im Codex vorgeschlagen werden.