it-swarm.com.de

Wie schreibe ich eine URL neu, um% taxonomy% anstelle von% category% zu verwenden, wenn mehrere Taxonomien vorhanden sind?

Ich möchte die Option haben, Taxonomie in der URL zu verwenden, anstatt nur eine Kategorie wie "nicht kategorisiert" zu haben. Beachten Sie, dass ich mehrere Taxonomien (Länder, Bundesstaaten usw.) habe, von denen einige Tausende von Begriffen haben (wenn das überhaupt zählt).

Bearbeiten: Ich habe nicht erwähnt, dass dies ein Ableger einer anderen Frage ist: Vor- und Nachteile der Verwendung von [Taxonomiename] anstelle von [Kategoriename]?

Das Ziel ist ein Permalink, der ungefähr so ​​aussieht wie domain.com/2011/taxonomy-term/post-name.

Wenn ich also eine Taxonomie mit dem Namen "Länder" und einen Beitrag über Ägypten habe, möchte ich in der Lage sein, den Begriff "Ägypten" in diese URL einzufügen.

2
Adam

Das Ändern der URL-Struktur eines Posts besteht immer aus zwei Teilen: dem Schreiben der neuen URL in Ihre Links und dem Behandeln der neuen Struktur.

Umgang mit der neuen Struktur

Die Handhabung der neuen Struktur ist einfach: Da der Post-Name (Slug) ausreicht, um einen Post zu identifizieren, können wir die Taxonomie, die Sie in der URL verwenden, ignorieren. Theoretisch sollten Sie in der Lage sein, jede Taxonomie zu verwenden, aber in der Praxis können Sie dies nicht ohne zusätzliche Verbesserungen tun.

Wenn Sie %category% verwenden, wird die Funktion redirect_canonical() aktiviert und versucht, alle Anfragen mit einem Begriff aus einer anderen Taxonomie in der URL zu einer Anfrage mit der Kategorie umzuleiten (da die Verwendung von nur einer URL für jeden Beitrag das Verteilen des Seitenrangs für die gleichen Inhalt). Sie sehen dies, wenn alle Ihre URLs auf /uncategorized/[post-name]/ zu verweisen scheinen. Sie können die Funktion ganz aushängen oder sich einhängen und die Umleitung verhindern, wenn sie nicht benötigt wird.

Die andere Möglichkeit wäre, eine Ihrer benutzerdefinierten Taxonomien in der Permalink-Struktur zu verwenden. Dadurch wird verhindert, dass redirect_canonical() etwas unternimmt (bis diese Funktion auch für benutzerdefinierte Taxonomien verbessert wurde). Aufgrund von einem Versehen in der WP 3.0-Version von benutzerdefinierten Taxonomien wird sie jedoch nicht generiert hierarchische Umschreiberegeln (dies wird in 3.1 behoben).

Was ich stattdessen versucht habe und was zu funktionieren scheint, ist, eine "Dummy" -Umschreibestruktur mit dem Namen "%anything%" zu erstellen, die mit ".+?" übereinstimmt (alles, aber nicht gierig). In diesem Fall sollten Sie auch dieausführlichen Seitenregelnwieder aktivieren, da WordPress nicht bemerkt, dass etwas los ist.

add_action('init', 'wpse9346_init');
function wpse9346_init()
{
    $GLOBALS['wp_rewrite']->add_rewrite_tag( '%anything%', '(.+?)', 'wpse9346_dummy=' );
    $GLOBALS['wp_rewrite']->use_verbose_page_rules = true;
}

Der Parameter wpse9346_dummy wird ignoriert, daher sollte die Verwendung dieses Parameters ziemlich sicher sein. Meine Umschreibestruktur ist jetzt /%anything%/%postname%/.

URLs der neuen Struktur schreiben

Dies ist der Teil, in dem Sie einige Überlegungen anstellen müssen: Wenn ein Beitrag mit Begriffen aus verschiedenen Taxonomien versehen werden kann, welche Taxonomie sollten wir verwenden, um einen Link zum Beitrag zu erstellen? Nehmen wir an, wir haben eine Taxonomie für Länder und eine für Regierungsbüros. Ein Beitrag über Mubarak würde in einer Taxonomie mit Egypt und in einer anderen mit President gekennzeichnet. Sollte die Post-URL /egypt/mubarak-steps-down/ oder /president/mubarak-steps-down/ sein? Beide URLs funktionieren und landen im selben Beitrag, aber wenn Sie meine %anything%-Lösung von oben verwenden, enthält der Permalink %anything%, was natürlich ungültig ist. Hängen Sie sich in post_link ein und ändern Sie die URL so, wie Sie sie benötigen.

1
Jan Fabry

Ich habe etwas Ähnliches gemacht. Dieser Artikel zeigte mir den Weg:

http://shibashake.com/wordpress-theme/add-custom-taxonomy-tags-to-your-wordpress-permalinks

0
user3228