Ich versuche folgende URL-Struktur zu erstellen:
example.com/attractions <-- post type archive
example.com/attractions/taxonomy_term <-- taxonomy archive
example.com/attractions/van-gogh-museum <-- custom post type
Leider ist dies nicht standardmäßig möglich: WordPress benötigt die Taxonomiebasis in der URL, wie der SE-Benutzer sanchothefat in seiner Antwort auf diese Frage schrieb:
... wenn Sie nicht möchten, dass der Taxonomie-Slug da ist, haben Sie kein Glück. Sie können nicht denselben Slug wie Ihren Beitragstyp oder eine andere Taxonomie haben, da dieser nicht weiß, welchen Begriff er hat ist aus welcher Taxonomie und was ist ein Beitrag.
Mit anderen Worten, WordPress benötigt diese Permalink-Struktur:
example.com/attractions/taxonomy_base/taxonomy_term
Meine Frage: Gibt es eine Möglichkeit, diese Funktion mit der WordPress Rewrite-API auszuführen?
Ich nehme an, es umfasst zwei Schritte:
Ich habe ein Code-Snippet gefunden, mit dem die Taxonomiebasis aus der URL entfernt werden soll:
global $wp_rewrite;
$wp_rewrite->extra_permastructs['taxonomy_base'] = array('%taxonomy_base%', EP_NONE);
( Quelle - siehe letzte Antwort am Ende der Seite)
Dies ist jedoch nicht die vollständige Lösung, da WordPress nicht erkennen kann, ob es sich bei dem Beitrag um ein Taxonomie-Archiv oder einen Beitragstyp handelt ...
Der Autor dieses tollen Artikels über Erweiterte Taxonomie-Abfragen mit hübschen URLs schrieb mir:
Was Sie fragen, ist nicht allzu schwierig, aber es könnte etwas schwierig sein. Die Umschreiberegeln müssen wissen, welche Art von Dingen der zweite Term ist (..) Deshalb das Präfix für Kategorie/Tag/Taxonomiename wird vorangestellt. Sie könnten ein Umschreiben erstellen, so dass alles after/attractions/wird als Taxonomie-URL behandelt, aber beides ist etwas schwierig.
Wer das gleiche Problem hat, sollte sich diese Diskussion auf WordPress Answers ansehen. Vor allem der Plugin-Code von MikeSchinkel könnte helfen.
Hier ist ein interessantes Beispiel für WPCandy, das die Taxonomiebasis und den Begriff in der URL kombiniert: http://wpcandy.com/pros/experienced/with-multisite
Vor kurzem bin ich auf die gleiche Situation gestoßen und habe nach einem Tag, an dem ich nach einer Lösung gesucht habe und keine gefunden habe, meine eigene working Lösung geschrieben.
Der Trick besteht darin, Wordpress wp_rewrite zu verwenden und Ihre URLs hinzuzufügen, wenn Wordpress seine Permalinks am Anfang generiert.
Ich habe eine einfache Funktion geschrieben, die alles automatisch erledigt und alles in meinem Blog erklärt (ich möchte nicht zweimal denselben Code einfügen).
http://someweblog.com/wordpress-custom-taxonomy-with-same-slug-as-custom-post-type/
Ich habe gerade ein Plugin zum Wordpress-Verzeichnis hinzugefügt, das die Slug-Basis für jede benutzerdefinierte Taxonomie und die Standardkategorietaxonomie entfernt. Sie finden es hier - http://wordpress.org/extend/plugins/wp-no-taxonomy-base/