WordPress Rewrite Problem

Ich habe eine benutzerdefinierte Taxonomie erstellt, zwei tatsächlich (ein Tag und eine Kategorie) für eine Seite, die eine Reihe von Community-Projekten auflistet. Dies ist die übergeordnete URL:

website.com/community 

Wenn Sie hierhin gehen, sehen Sie ALLE Projekte. Ich habe erfolgreich Abfrage Vars eingerichtet, so dass, wenn Sie eingeben sagen:

 website.com/community/?stencil-tag=easter 

oder

 website.com/community/?stencil-type=build 

alles funktioniert wie es soll. Es ist perfekt. Jetzt versuche ich natürlich, schöne Permalinks einzurichten, damit die Benutzer einfach reinkommen können

 website.com/community/tag/easter 

und

 website.com/commumity/type/build 

beziehungsweise. Ich habe das Gefühl, dass das Problem etwas mit der Tatsache zu tun haben könnte, dass ich versuche, eine Kindseite der Wurzel (/ community) neu zu schreiben.

Wie auch immer, das ist meine Neuschreibfunktion. Ich habe ein paar Abweichungen ausprobiert, aber ich kann nicht sehen, hier zu treffen. Ich erinnere mich, auch zu spülen.

 add_action('init','add_community_rewrite_rules'); function add_community_rewrite_rules() { add_rewrite_rule( 'tag/(\d*)$', 'index.php?pagename=community&stencil-tag=$matches[1]', 'top' ); add_rewrite_rule( 'type/(\d*)$', 'index.php?pagename=community&stencil-type=$matches[1]', 'top' ); } 

Wenn jemand den Fehler meiner Wege hier sieht und mich in die richtige Richtung weisen kann, wäre ich unglaublich dankbar. Vielen Dank.

Solutions Collecting From Web of "WordPress Rewrite Problem"

Die Umschreibregeln sind falsch. Wenn Sie beispielsweise von community/tag/easter in 'index.php?pagename=community&stencil-tag=easter' umschreiben möchten, sollte die Regex community/tag/ und nicht nur tag/ . Außerdem passen \d nur Ziffern, aber der Tag-Wert ist eine Zeichenkette. Gleiches gilt für das Neuschreiben von Stencil-Tags. Du könntest verwenden . um ein beliebiges Zeichen, sowohl numerische als auch Zeichenfolgen, zu finden.

 add_action('init','add_community_rewrite_rules'); function add_community_rewrite_rules() { add_rewrite_rule( '^community/tag/(.*)$', 'index.php?pagename=community&stencil-tag=$matches[1]', 'top' ); add_rewrite_rule( '^community/type/(.*)$', 'index.php?pagename=community&stencil-type=$matches[1]', 'top' ); } 

Obwohl diese Umschreibregeln korrekt sein können, sollten Sie einen anderen Ansatz wählen. Verwenden Sie die von WordPress generierte Standardarchivseite für den projects . Wenn Sie eine bestimmte Vorlage dafür benötigen, erstellen Sie die Datei archive-projects.php in Ihrem Themenordner. Sie können den Slug von projects in die community umschreiben, wenn Sie den Post-Typ registrieren, wenn Sie diese URL für das Post-Typ-Archiv haben möchten:

 add_action( 'init', function() { $args = array( //Your args here 'rewrite' => array( 'slug' => 'community' ), ); register_post_type( 'projects', $args ); } ); 

Wenn Sie die Taxonomien registrieren, können Sie auch die Umschreibungsregeln erstellen:

 add_action( 'init', function() { //Custom post type $args = array( //Your args here 'rewrite' => array( 'slug' => 'community' ), ); register_post_type( 'projects', $args ); //Custom taxonomies: stencil-tag $args = array( //Your args here 'rewrite' => array( 'slug' => 'community/tag' ), ); register_taxonomy( 'stencil-tag', 'projects', $args ); //Custom taxonomies: stencil-tag $args = array( //Your args here 'rewrite' => array( 'slug' => 'community/type' ), ); register_taxonomy( 'stencil-type', 'projects', $args ); } ); 

Jetzt werden die Umschreibungsregeln von WordPres automatisch verarbeitet und Sie müssen keine Seite rendern und eine sekundäre Abfrage für die Posts innerhalb der Seite erstellen, wenn sie in der Hauptabfrage abgerufen werden.