it-swarm.com.de

Entfernen der Taxonomiebasis mit WP umschreiben

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:

  1. Entfernen der Taxonomiebasis von der URL
  2. Teilen Sie WordPress mit, welcher Beitragstyp angezeigt werden soll

Update Nr. 1

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 ...


Update Nr. 2

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.


Update Nr. 3

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

4
Mattvic

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/

1
Some Web Guy

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/

1