Entfernen Sie Taxonomiebasis oder -begriff von der URL

Ich weiß, dass es hier viele Posts gibt, aber KEINE von ihnen haben mein Problem beantwortet.

Ich arbeite mit einem benutzerdefinierten Thema, das einen benutzerdefinierten Kategorietyp (benannte Nachrichtentypen) hat. Ich habe eine Kategorie namens Medien erstellt. Dieses Thema ist so eingerichtet, dass ich ein Menüelement hinzufügen kann, das beim Klicken alle Elemente anzeigt, die mit Medien beschriftet sind. Die URL der Seite lautet dann mysite.com/messagetypes/media. Ich möchte Messatypen aus der URL entfernen und habe nur mysite.com/media.

Der nächste, den ich bekommen habe, ist, wenn ich auf der Seite mit den benutzerdefinierten Kategoriefunktionen hinzufüge, wo

register_taxonomy( 'messagetypes', ... 

wird mit aufgerufen

 'rewrite' => array( 'slug' => ''), 

Wenn ich dies tue, bekomme ich das gewünschte Ergebnis von dieser Seite, aber alle meine anderen Seitenlinks brechen (mit Permalinks).

Ich habe auch versucht, zu dem Rewrite-Array hinzuzufügen

 'with_front' => false 

aber das hat auch nicht funktioniert.

Jede Hilfe oder Einsicht wäre großartig. Ich habe zu viele Stunden damit verschwendet und es macht mich verrückt.

Vielen Dank.

Solutions Collecting From Web of "Entfernen Sie Taxonomiebasis oder -begriff von der URL"

Wenn ich dies tue, bekomme ich das gewünschte Ergebnis von dieser Seite, aber alle meine anderen Seitenlinks brechen (mit Permalinks).

Weil WordPress einfach keine Ahnung hat, dass du nach einer Seite fragst. Es tut, was du ihm gesagt hast;

Suchen Sie für alle URLs, die wie http://example.com/X aussehen, nach Posts mit Nachrichtentyp von X

Deshalb brauchen Sie den ‘Bezeichner’ dort; so dass es den Unterschied zwischen Anfragen für Seiten, Archive, Kategorien unterscheiden kann …

Wenn Sie diese functionalität wirklich möchten, sollten Sie am Anfang der Neuschreibe-Map ausführliche Rewrite-Regeln hinzufügen.

 add_rewrite_rule( 'media/?$', 'index.php?messagetypes=media', 'top' ); 

Wenn Sie viele Nachrichtentypen haben, möchten Sie vielleicht beim Erstellen und Löschen von Termen mithelfen und die Umschreibungsregeln dynamisch aktualisieren und leeren.

Ansonsten wiederhole das Beispiel für jeden Begriff in deiner functions.php und lösche dann deine Permalinks (besuche einfach die Permalink-Optionen in admin).

Eine letzte Sache, setze deinen register_taxonomy Aufruf ‘zurück auf normal’, dh lass das Argument zum rewrite weg und benutze den term_link Filter, um den benutzerdefinierten Permalink selbst zu tauschen;

 function __custom_messagetypes_link( $link, $term, $taxonomy ) { if ( $taxonomy !== 'messagetypes' ) return $link; return str_replace( 'messagetypes/', '', $link ); } add_filter( 'term_link', '__custom_messagetypes_link', 10, 3 );