it-swarm.com.de

Entfernen Sie die benutzerdefinierte Taxonomiebasis

Ich verwende benutzerdefinierte Taxonomien mit WordPress 3.0.4

Ich frage mich, ob jemand weiß, wie man die Taxonomiebasis von der URL entfernt.

Ich habe Plugins gesehen, die dies für Kategorien und Tags tun, aber nicht für benutzerdefinierte Taxonomien.

Zum Beispiel habe ich eine benutzerdefinierte Taxonomie namens "Städte". Ich möchte, dass meine URL-Struktur mydomain.com/newyork anstelle von mydomain.com/cities/newyork lautet

Gibt es eine Funktion oder etwas, das ich verwenden kann?

3
Carson

Ich denke, das ist möglich, aber Sie müssen die Reihenfolge der Umschreiberegeln im Auge behalten. Um Ihnen dabei zu helfen, empfehle ich ein Plugin, das ich geschrieben habe, um die Umschreiberegeln zu analysieren (bald im Repository verfügbar, aber Sie können eine Vorabversion herunterladen ).

Erstens sind diese Regeln ziemlich allgemein und sollten daher am Ende der Regelliste stehen. Die Standardaktion besteht darin, sie an die erste Stelle zu setzen. Daher verhindern wir die Standardeinstellung und fügen sie selbst hinzu. Wir haben bereits die generischen Seitenregeln unten, daher sollten wir sie explizit machen und sie nach oben verschieben, indem wir ausführliche Seitenregeln aktivieren. Dies ist nicht effizient, wenn Sie viele Seiten haben, aber ich glaube nicht, dass es jetzt eine andere Möglichkeit gibt, dies zu tun.

add_action( 'init', 'wpse6342_init' );
function wpse6342_init()
{
    // Register your taxonomy. `'rewrite' => false` is important here
    register_taxonomy( 'wpse6342', 'post', array(
        'rewrite' => false,
        'label' => 'WPSE 6342',
    ) );

    // Enable verbose page rules, so all pages get explicit and not generic rules
    $GLOBALS['wp_rewrite']->use_verbose_page_rules = true;
}

add_action( 'generate_rewrite_rules', 'wpse6342_generate_rewrite_rules' );
function wpse6342_generate_rewrite_rules( &$wp_rewrite )
{
    // This code is based on the rewrite code in `register_taxonomy()`

    // This rewrite tag (%wpse6342%) is just a placeholder to use in the next line
    // 'wpse6342=` should be the same as the `query_var` when registering the taxonomy
    //    which is the name of the taxonomy by default
    // `(.+?)` works for a hierarchical taxonomy
    $wp_rewrite->add_rewrite_tag( '%wpse6342%', '(.+?)', 'wpse6342=' );
    // This will generate the actual rewrite rules, and put the at the end of the list
    $wp_rewrite->rules += $wp_rewrite->generate_rewrite_rules( $wp_rewrite->front . '%wpse6342%', EP_NONE );
}
1
Jan Fabry

Das Umschreiben des Slugs (-> zum Leeren) in der Taxonomie-Registrierung funktioniert nicht, daher bin ich mir nicht sicher, welche anderen Optionen Sie in WordPress haben. Wahrscheinlich müssen Sie .htaccess direkt an Ihre Anforderungen anpassen.

Ein Wort der Vorsicht zu diesem Permalink-Setup; Otto beschreibt das Thema hier recht gut: http://ottopress.com/2010/category-in-permalinks-considered-harmful/ .

Prost

Noel

1
Noel Tock

Ich habe das WP No Taxonomy Base-Plugin ausprobiert, das vom Plugin-Autor erwähnt wurde, und es hat bei mir nicht funktioniert. Zuerst war ich optimistisch, dass es den Trick machen würde, aber dann bemerkte ich, dass alle Site-Permalinks weiterhin den Basis-Slug behielten. Erst nach dem Navigieren zu einem der Link-Ziele wurde der Basis-Slug entfernt, aber er blieb in allen Site-Permalinks bestehen, was den Zweck zunichte macht.

Ich habe gehört, dass es einigen Leuten gelungen ist, das zu tun, was Sie gerne mit dem WP htaccess Control - Plugin tun würden. Sein Autor listet die folgenden Funktionen auf:

  • Anpassen der von WordPress generierten htaccess-Datei;
  • Entfernen einer benutzerdefinierten Taxonomiebasis von Permalinks;
  • Entfernen der Kategoriebasis von Permalinks;
  • Entfernen der Autorenbasis von Permalinks;
  • Anpassen der Author Permalink Base;
  • Anpassen von paginierten Permalinks (übersetzen Sie das Wort "Seite" auf Permalinks in Ihre eigene Sprache);
  • Anpassung (und Kanonisierung) der Search Permalink Base;
  • Erstellung von auf Kategorien, Autoren, Tags und benutzerdefinierten Taxonomien basierenden Archiven (z. B. "http://your-site.com/category/stories/2010/12", "http://your-site.com/author/admin/") 2010/12/page/2 "und" http://your-site.com/tag/wordpress/2010/12 ") funktioniert dies auch, wenn Sie den Basis-Slug entfernt haben.
  • Wartungsmodus;
  • wp-login.php Umleitung.

Ich persönlich hatte Probleme, das Plugin zum Speichern meiner neuen Einstellungen zu bekommen, wenn ich es ausprobierte. Es wollte beim Speichern eine Verbindung zu "https" anstelle von "http" herstellen und gab einen Fehler aus, wenn dies nicht möglich war. Vielleicht haben Sie jedoch mehr Glück!

1
WordPressed