WordPress: So erstellst du Rewrite Rules mit PHP

Marc Wagner, Juli 18, 2022

In WordPress kannst du mittels PHP eigene RewriteRules erstellen, um so individuelle URLs zu generieren. Dafür sind lediglich 3 Schritte notwendig. In diesem Artikel erkläre ich, wie du unkompliziert eigene RewriteRules über PHP für deine WordPress Webseite erstellen kannst.

Anlegen der Rewrite Rules #

WordPress bietet für das anlegen von RewriteRules die Funktion add_rewrite_rule an.

add_rewrite_rule(string $regex, string|array $query, string $after = 'bottom');

Dadurch können wir jederzeit eigene Rewrite Rules erzeugen. Wir verwenden diese Funktion, indem wir sie in unserer functions.php implementieren.

Inhalte einer anderen Seite laden #

add_action('init', function(){
    add_rewrite_rule('job/([a-zA-Z0-9\-]+)/bewerben', 'index.php?pagename=jetzt-bewerben&job-name=$matches[1]','top');
});

In unserem Beispiel oben erstellen wir nun eine neue Rewrite Rule, die beim Aufruf einer URL in diesem Format ‚https://meine-domain-xyz.de/job/elektriker-m-w-d/bewerben‘ den Inhalt der Seite ‚https://meine-domain-xyz.de/jetzt-bewerben‘ ausgibt. Hierfür dient der Parameter „pagename“.

Zusätzlich teilen wir WordPress mit, dass der Wert zwischen ‚job‘ und ‚bewerben‘ als GET Parameter mit der Bezeichnung ‚job-name‘ übergeben werden soll. Damit wir diesen Paramter in WordPress verwenden können, müssen wir dem System mitteilen, dass dieser Parameter existiert.

Ein eigenes Template laden #

Alternativ kannst du über deine Rewrite Rule auch ein individuelles Template laden. Hierfür musst du lediglich den Action-Hook ‚template_include‘ verwenden und das Template, das du verwenden möchtest integrieren.

add_action( 'template_include', function( $template ) {
    if ( false == get_query_var( 'job-name' ) || '' == get_query_var( 'job-name' )) {
        return $template;
    }
 
    return get_template_directory() . '/page-job-name.php';
});

Jetzt wird immer dann, wenn in der Abfrage der Parameter ‚job-name‘ vorkommt, das Template ‚page-job-name.php‘ geladen und ausgegeben.

Anfrage Parameter (query vars) definieren #

In der oben erstellten Rewrite Rule haben wir einen neuen Parameter ‚job-name‘ definiert. Um diesen verwenden zu können, müssen wir ihn jedoch zunächst bei WordPress registrieren. Dafür verwenden wir den Filter ‚query_vars‘ und ergänzen das Array um unseren eigenen Parameter.

add_filter('query_vars', function($query_vars){
    $query_vars[] = 'job-name';
    return $query_vars;
});

Über ‚get_query_var‘ können wir dann unseren Parameter einfach und unkompliziert abfragen.

Rewrite Rules Cache leeren #

Zuletzt müssen wir noch den Cache für die Rewrite Rules neu laden. Hierfür können wir entweder die Funktion flush_rewrite_rules verwenden, oder aber einfach im WordPress Dashboard > Einstellungen > Permalinks den „Speichern“ Button betätigen.

Wichtig: Falls du dich dafür entscheidest, die Funktion flush_rewrite_rules zu verwenden, solltest du darauf achten, diese auch wieder zu entfernen. Ansonsten werden die Rewrite Rules bei jedem Laden deiner WordPress Webseite neu erzeugt und beeinträchtigen die Performance deiner Webseite.

Fazit #

Das war es auch schon. WordPress erlaubt es dank seiner Modularität schnell und unkompliziert eigene Rewrite Rules zu definieren, die wir auf unsere Bedürfnisse anpassen können. Hast du bereits einmal eigene Rewrite Rules erzeugt oder hast du weitere Anregungen, dann las es uns gerne wissen.

Benutzerbild von Marc Wagner
Marc Wagner

Hi Marc here. I'm the founder of Forge12 Interactive and have been passionate about building websites, online stores, applications and SaaS solutions for businesses for over 20 years. Before founding the company, I already worked in publicly listed companies and acquired all kinds of knowledge. Now I want to pass this knowledge on to my customers.

Ähnliche Beiträge

Comments

Hinterlasse einen Kommentar