it-swarm.com.de

Entfernen Sie den Slug in der Taxonomie-URL

Ich frage mich nur, wie man Butzen aus einigen URLs entfernen kann. Ich verwende einen benutzerdefinierten Beitragstyp namens "Aussteller" und einige Taxonomien, um diese Aussteller zu definieren (z. B. "Featured Guests", "Publisher" usw.):

Im Moment habe ich folgendes: http://thisurl.com/exhibitor_filters/featured-guests/

Ich würde das mögen: http://thisurl.com/featured-guests/

Ich habe mit dem Rewrite/Slug in WP rumgespielt, aber bisher keine Würfel.

Vorschläge?

Vielen Dank!

-Edit-

Es macht Spaß, jetzt bekomme ich nur 404 Fehler für everything mit benutzerdefinierten Post-Typen und Taxonomie-Begriffen. Ich werde sehen, ob ich wenigstens dafür sorgen kann, dass dieses Ding nicht mehr so ​​oft herumwirbelt ... Danke für eure allgemeinen Vorschläge, Leute.

6
Nadine

Dies ist standardmäßig nicht möglich und die Verwendung der CPT- und der benutzerdefinierten Steuerregistrierungs-APIs ist nicht möglich.

Und aus gutem Grund.

Es hat alles mit Permalink und Schneckenkollisionen zu tun und Mehrdeutigkeiten zu beseitigen. Zugegebenermaßen gibt es Fälle, in denen eindeutige URLs, die sich nie überschneiden, aus diesem Grund vom System nicht zugelassen werden (falsch negativ).

Daher empfehle ich Ihnen, sich für einen Ersatz für 'exhibitor_filters' wie 'exhibitors' oder 'filters' zu entscheiden und diesen als Slug in der Option zum Umschreiben bei der Registrierung zu verwenden.

Wenn Sie es jedoch wirklich so machen möchten, wie Sie es möchten, müssen Sie Umschreiberegeln hinzufügen. Dies kann problematisch sein, da Sie das reale Risiko von Konflikten eingehen (laden wir die Seite 'about' oder den Ausstellerbegriff 'about'?) Und die Reihenfolge und Prioritäten Ihrer Hooks eine große Rolle spielen.

z.B.

function ex_rewrite( $wp_rewrite ) {

    $feed_rules = array(
        '(.+)'    =>  'index.php?exhibitor_filter='. $wp_rewrite->preg_index(1)
    );

    $wp_rewrite->rules = $wp_rewrite->rules + $feed_rules;
}
// refresh/flush permalinks in the dashboard if this is changed in any way
add_filter( 'generate_rewrite_rules', 'ex_rewrite' );

Der obige Code funktioniert für einzelne Begriffe, muss jedoch für heirarchische URLs und Taxonomien geändert werden.

Fügen Sie den Code in die Datei functions.php Ihres Themes oder in das dazugehörige Plugin ein.

Warnung: Sie müssen darauf achten, nicht mit Permalinks in Konflikt zu geraten, und Sie müssen wissen, in welcher Reihenfolge die Regeln an erster Stelle stehen. Verwenden Sie das Monkeyman Rewrite Analyzer Plugin, um dies zu testen. Du wurdest gewarnt.

6
Tom J Nowell

Es gibt ein Plugin, mit dem Sie den Taxonomie-Slug mit wenigen Klicks entfernen können. Wie auch immer, wie Tom sagte, sei vorsichtig, wenn du zum Beispiel zwei verschiedene Taxonomien nicht gleich nennst, sonst bremst alles.

Die Plugin-URL lautet http://wordpress.org/extend/plugins/wp-htaccess-control/

2
chifliiiii

Ich fand diese Antwort hier und verwendete den Code in den Kommentaren von Jonathan Brinley. Sie sollten zuerst Ihre Taxonomie "exhibitor_filters" und dann Ihre CPT deklarieren und den Slug auf %exhibitor_filters% setzen.

Dann sind alle Ihre CPTs und Begriffe in Ordnung, einschließlich der Links zu Termarchiven. In meinem Fall habe ich den CPT-Slug mithilfe von% taxo% im CPT-Slug aus den Permalinks entfernt und auch gearbeitet, außer im Termarchiv, in dem der CPT-Slug weiterhin angezeigt wird, aber in Ihrem Fall scheint es, was Sie wollen.

Sie möchten anscheinend Archivseiten mit allen benutzerdefinierten Beiträgen im Ausstellerfilter "featured-guests".

Viel Glück.

0
sergio

Sie sollten dies in Ihrem Permalink-Bereich angeben können. Sie können dies über einen benutzerdefinierten Permalink festlegen, aber es scheint, als ob eine der Standardoptionen "post name" für Sie funktionieren sollte. Dies finden Sie unter Einstellungen, Permalinks im WordPress-Backend.

0
Lorenzo W.