Custom URLs in WordPress

Das Content Management System WordPress lässt sich umfassend anpassen und erweitern. Möchte man Custom URLs nutzen, dann kann man beispielsweise im WordPress Backend Seiten anlegen und Page Templates nutzen. Dies kann allerdings schnell zu einem Sammelsurium an „Hilfsseiten“ im Backend führen, wenn man viele individuelle Seiten mit eigenen URLs benötigt. Ein alternativer Ansatz wird mit Hilfe von nachfolgendem Code beschrieben. Ziel ist eine Seite, die Events anzeigt – basierend auf der jeweiligen Event-ID:

add_action( 'init', function (){
    add_rewrite_rule( 'events/([0-9]+)/?$', 'index.php?pagename=events&event_id=$matches[1]', 'top' );
} );

add_filter( 'query_vars', function ( $query_vars ){
    $query_vars[] = 'event_id';
    return $query_vars;
} );

In der Datei page-events.php (im Theme-Verzeichnis) kann man dann via get_query_var(‚event_id‘) auf die ID des Events zugreifen, sofern eine ID angegeben ist.

Wichtig ist, nach dem Hinzufügen den oben beschriebenen Codes folgenden Befehl einmal auszuführen:

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

Dieser Befehl ist allerdings sehr ressourcenhungrig, weshalb er nicht bei jedem Aufruf von WordPress ausgeführt werden sollte! Alternativ kann man auch im WordPress Backend unter Einstellungen – Permalinks gehen und hier einmal auf Änderungen speichern klicken, was zum gleichen Ergebnis führt.

Weitere hilfreiche Informationen findet man auch in der offiziellen WordPress-Doku:

Schreibe einen Kommentar