Wordpress - Url für eigene Plugins erweitern

Die Url einer Seite wird von Wordpress automatisch bearbeitet und erstellt, dies funktioniert in den meisten Fällen auch tadellos und ohne Probleme. Wenn man SEO-freundliche Urls und Zugriff auf die .htaccess Datei auf dem Webserver hat, kann man eigene Regeln ( RewriteCond / RewriteRule ) definieren und so eigene Urls einbinden. Dies ist jedoch nicht von langer Dauer, da einige Plugins oder auch der Wordpress Core die .htaccess Datei bearbeiten - da Wordpress nicht weiß, dass dort auch "systemfremde" Inhalte stehen - sind auch die eigenen Inhalte weg.

Nach einigem Suchen habe ich dieses Plugin gefunden und kann es wärmstens empfehlen:
AskApache RewriteRules Viewer 3.0. Dieses Plugin listet alle internen Regeln auf, die im Wordpress Core registriert sind - eine bessere Kontrolle über die interne Verarbeitung kann man sich nicht wünschen.

Ausgangslage für diesen Artikel war folgendes Problem: mein neues Plugin ( sollte bald fertig werden ) stellt einen Eventkalender dar - Url: /events/. Sobald man ein Event gewählt hat, wird die gleiche Seite aufgerufen, mit weiteren Informationen - Url: /events/Linkin-Park/. Im normalen Fall würde Wordpress die Seite "Linkin-Park" suchen, die als Oberkategorie "events" hat; da es diese Seite nicht gibt, erscheint ein 404 Fehler.
Das muss nicht sein.

Das Plugin um diese Zeilen erweitern:

// init
function event_plugin_init() {
    global $wp;
    $pagename = 'events';

    $wp->add_query_var( 'artist_name' );

    // role
    add_rewrite_rule( "$pagename/([^/]+)/?global $wp_rewrite;
    $wp_rewrite->flush_rules();quot;, 'index.php?pagename='.$pagename.'&artist_name=$matches[1]', 'top' );
}
add_action( 'init', 'event_plugin_init' );

Jetzt muß Wordpress nur noch angewiesen werden, die Permalinks zu neu zu erstellen:

global $wp_rewrite;
$wp_rewrite->flush_rules();

Im Plugin kann dann auf den Wert in der Url zugegriffen werden:

$artist_name = get_query_var( 'artist_name' );

Auf diese Weise können weitere Parameter, Urls und Regeln definiert werden, die jedes Update von Wordpress überleben und nachher inwandfrei funktionieren.



Ein Beitrag von Ingo Hillebrand
Ingo's avatar

Ingo Hillebrand lebt in Soest und arbeitet als Anwendungsentwickler bei der Firma connect-io. Dort beschäftigt sich der studierte Wirtschaftsinformatiker (Bachelor of Science) weiterhin mit Magento. Sie erreichen ihn per e-Mail an ingo@webguys.de oder über Xing.

Alle Beiträge von Ingo

Kommentare
Michael am

Das wäre spitze, danke :-)

Ingo Hillebrand am

Dieses Code-Snippet ist mehrere Jahre alt und funktionierte mit der damals aktuellen Wordpress Version. In einer ruhigen Minute werde ich das Snippet anschauen und gegebenenfalls anpassen.

Michael am

Sind in dem Quellcode fehler enthalten? Irgendwie lässt er sich nicht umsetzen..

Dein Kommentar