Benutzerdefinierte Taxonomie-URL

Ich habe all die ähnlichen Antworten hier stundenlang gelesen, kann aber nichts Grundlegendes für meine Bedürfnisse finden.

Ich habe einen nicht hierarchischen benutzerdefinierten Posttyp “Inventar”. Ich habe eine benutzerdefinierte Taxonomie “Abteilung”, die die Inventarkategorie ist

Ich möchte, dass die URL für den Permalink einer einzelnen Seite lautet:

sitename.com/division/postname 

aber es kommt nur als:

 sitename.com/postname 

Was ist der einfachste Weg, um die Inventarkategorie (Abteilung) in der URL anzuzeigen? Nur um zu verdeutlichen, würde ich gerne “Division” durch den Namen der Kategorie ersetzen, die diese Division darstellt.

Vorschläge werden sehr geschätzt!

Aktualisieren:

Die Antwort von Marfarma unten funktionierte perfekt, beachten Sie, dass es notwendig war, die statische Zeichenkette vor dem dynamischen Teil einzufügen:

 'rewrite' => array( 'slug' => 'division/%division%', 'with_front' => false ), 

Solutions Collecting From Web of "Benutzerdefinierte Taxonomie-URL"

Wenn Sie nur “division” in der URL haben wollten, besteht der Trick darin, den benutzerdefinierten Post-Typ mit der Slug-Option zu registrieren:

     'rewrite' => array ('slug' => 'division', 'with_front' => false),

Da Sie jedoch den aktuellen Wert des Divisionstags für die Wortteilung ersetzen möchten, ist die Antwort viel interessanter.

Was Sie tun müssen, ist Ihr eigenes Rewrite-Tag zu deklarieren:% division%

 global $ wp_rewrite;
 $ wp_rewrite-> add_rewrite_tag ('% division%', '(. +? /)?', 'division =');

Dann wird deine Schnecke wie folgt deklariert:

     'rewrite' => array ('slug' => '% division%', 'with_front' => false),

Dann müssen Sie die function post_type_link haken, um das Tag zu lösen.

 add_filter ('post_type_link', 'division_permalink', 10, 3);

 function division_permalink ($ permalink, $ post_id, $ leavename) {
     if (strpos ($ permalink, '% division%') === FALSE) gebe $ permalink zurück;

         // Post erhalten
         $ post = get_post ($ post_id);
         if (! $ post) gibt $ permalink zurück;

         // Get Taxonomie Begriffe
         $ terms = wp_get_object_terms ($ post-> ID, 'division');    
         if (! is_wp_error ($ terms) &&! leer ($ terms) && is_object ($ terms [0])) $ taxonomy_slug = $ terms [0] -> slug;
         sonst $ taxonomy_slug = 'division-missing';

     return str_replace ('% division%', $ taxonomy_slug, $ permalink);
 }

Hinweis: Nicht getesteter Code, bitte lassen Sie uns wissen, wenn Sie irgendetwas reparieren müssen, um es zum Laufen zu bringen. Insbesondere würde ich normalerweise die Form division /% division% verwenden – daher ist es möglich, dass dieser Code nicht funktioniert, ohne dass eine statische Zeichenkette vor dem dynamischen Teil steht, dh eine URL wie diese: division /% division% / Seite.php

Hilfreiche benutzerdefinierte Tutorials für benutzerdefinierte Post-Typen im Web:

Interessante benutzerdefinierte Beitragstyp Slug mit Taxonomie und Custom Field

http://xplus3.net/2010/10/04/wp-rewrite-tags-in-permalinks/

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

Zusätzliche Anmerkung:

Wenn der oben angegebene Code nicht ohne ein statisches Präfix funktioniert (dh “division /% division%”), und Sie das wirklich brauchen, dann empfehle ich Ihnen, den Code dieses Plugins genau zu lesen:

http://wordpress.org/extend/plugins/wp-no-category-base/

Es ist nur 93 Zeilen lang (und 26 von ihnen sind Kommentare, die das Plugin identifizieren und GPL-Lizenzierung angeben). Wenn Sie diese Logik für Ihr CPT in Verbindung mit dem oben genannten replizieren können, vermute ich, dass es funktioniert.