Mehrere Taxonomien in der URL
Wie hängt man mehrere Taxonomien an die URL mit den folgenden Angaben an:
- Beitragstyp: Produkte
- Taxonomie: Produkttyp
- Taxonomie: product_brand
Hinzufügen eines neuen Produkts und Auswahl von Typ und Marke für dieses Produkt:
Beim Hinzufügen eines neuen Produkts gibt es zwei Taxonomiefelder (product_type und product_brand). Nennen wir diesen neuen Beitrag Testprodukt 1 . Das erste, was wir tun möchten, ist anzukreuzen, mit welcher Art von Produkt ich es zu tun habe, sagen wir Handys . Als nächstes möchte ich ankreuzen , zu welcher Marke das Produkt gehört, sagen wir Samsung.
Jetzt ist "Testprodukt 1 " dem Typ "Handys" und der Marke "Samsung" zugeordnet .
Das gewünschte Endergebnis ist:
/ products
»Alle benutzerdefinierten Beiträge anzeigen/ products / handys
»Alle benutzerdefinierten Beiträge mit den Taxonomie-Handys anzeigen/ product / handys / samsung /
»Alle benutzerdefinierten Beiträge anzeigen, in denen die Taxonomie Handys UND Samsung lautet/ products / handys / samsung / test-product-1
»Produkt anzeigen (einzelner benutzerdefinierter Beitrag)
Die Frage
Wie würde man das möglich machen? Mein erster Gedanke war, eine Taxonomie zu verwenden, bei der "Handys" der übergeordnete Begriff von "Samsung" war . Das Anhängen der Taxonomie und ihrer Begriffe war nicht so schwierig. Aber es führte zu vielen anderen Problemen, einige bekannt, andere weniger. Auf jeden Fall funktioniert es nicht so, da es 404 Probleme gibt und WP bestimmte Dinge nicht zulässt.
WP.org »Taxonomie-Archiv-Vorlage
Dies führte mich dazu, die Struktur zu überdenken, Taxonomien und ihre Bedingungen zu verlassen, und ich dachte; Warum nicht eine zweite Taxonomie erstellen und den Beitragstyp damit verknüpfen und an die URL anhängen?
Gute Frage, aber wie?
Antworten:
Dies ist sicherlich möglich, indem Sie in gewissem Umfang eigene Umschreiberegeln verwenden. Die WP_Rewrite- API stellt Funktionen bereit , mit denen Sie Umschreiberegeln (oder 'Maps') hinzufügen können, um eine Anforderung in eine Abfrage zu konvertieren.
Es gibt Voraussetzungen, um gute Umschreiberegeln zu schreiben, und die wichtigste ist das grundlegende Verständnis regulärer Ausdrücke. Die WordPress Rewrite-Engine verwendet reguläre Ausdrücke, um Teile einer URL in Abfragen zu übersetzen, mit denen Beiträge abgerufen werden sollen.
Dies ist ein kurzes und gutes Tutorial zu PHP PCRE (Perl-kompatible reguläre Ausdrücke).
Sie haben also zwei Taxonomien hinzugefügt. Nehmen wir an, ihre Namen sind:
Wir können diese in Abfragen wie folgt verwenden:
Die Abfrage wäre
?product_type=cell-phones&product_brand=samsung
. Wenn Sie dies als Ihre Abfrage eingeben, erhalten Sie eine Liste der Samsung-Telefone. Um/cell-phones/samsung
in diese Abfrage umzuschreiben, muss eine Umschreiberegel hinzugefügt werden.add_rewrite_rule()
werde das für dich tun. Hier ist ein Beispiel dafür, wie Ihre Umschreiberegel für den obigen Fall aussehen könnte:Sie werden müssen
flush_rewrite_rules()
, sobald Sie die Rewrite - Regel hinzugefügt haben es in die Datenbank zu speichern. Dies geschieht nur einmal, es ist nicht erforderlich, dies bei jeder Anforderung zu tun, sobald eine Regel dort gelöscht ist. Um es zu entfernen, spülen Sie es einfach ohne die hinzugefügte Umschreiberegel.Wenn Sie eine Paginierung hinzufügen möchten, können Sie dies tun, indem Sie Folgendes tun:
quelle
Das Endergebnis
Dies ist, was ich mir ausgedacht habe, indem ich teilweise Teile aus allen Antworten verwendet habe, die ich habe:
Einige Gedanken:
Das funktioniert. Obwohl Sie ‚erforderlich‘ beide Taxonomien jedem Beitrag zuweisen oder die URL ein nachstehendes haben
'/'
»'/products/taxonomy//postname'
. Da ich allen meinen Procuts beide Taxonomien zuweisen werde, die einen Typ und eine Marke haben, scheint dieser Code für meine Bedürfnisse zu funktionieren. Wenn jemand Vorschläge oder Verbesserungen hat, kann er gerne antworten!quelle
flush_rewrite_rules()
aufinit
? nicht dazu. Grundsätzlich setzen Sie Ihre Umschreiberegeln bei jedem Laden der Seite zurück.Überprüfen Sie auf diese Weise, es gibt immer noch einige Fehler im Markenarchiv
http://pastebin.com/t8SxbDJy
}}
quelle
Obwohl dies nicht Ihre genau gewünschte URL-Struktur ist, können Sie Folgendes erhalten:
ohne benutzerdefinierte Regeln zum erneuten Schreiben angeben zu müssen.
Es ist jedoch erforderlich, dass Sie Ihre Taxonomien und benutzerdefinierten Beitragstypen in einer bestimmten Reihenfolge registrieren. Der Trick besteht darin, jede Taxonomie zu registrieren, bei der der Slug mit dem Slug Ihres Post-Typs beginnt, bevor Sie diesen benutzerdefinierten Post-Typ registrieren. Nehmen Sie zum Beispiel die folgenden Schnecken an:
Dann könnten Sie sie in dieser Reihenfolge registrieren:
Wenn Sie unbedingt eine URL haben müssen wie:
Dann würden Sie eine Umschreiberegel wie diese benötigen:
UPDATE /programming/3861291/multiple-custom-permalink-structures-in-wordpress
So definieren Sie die URL für einen einzelnen Beitrag korrekt neu.
Setzen Sie das erneute Schreiben für den benutzerdefinierten Beitragstyp auf false. (Lassen Sie das Archiv unverändert) und registrieren Sie nach dem Registrieren der Taxonomien und Beiträge auch die folgenden Umschreiberegeln.
Filtern Sie anschließend post_type_link, um die gewünschte URL-Struktur zu erstellen. Dabei werden nicht festgelegte Taxonomiewerte berücksichtigt. Wenn Sie den Code aus dem verlinkten Beitrag ändern, haben Sie:
Jetzt muss ich nur noch herausfinden, wie die URL der Markentaxonomie ohne das führende Markentag neu geschrieben werden kann, und ich sollte genau mit Ihrer gewünschten URL übereinstimmen.
quelle