2011-01-04 8 views
3

Ich habe eine vollkommen gute (bis jetzt) ​​Einrichtung von WordPress für eine neue Website. Die hübschen URLs funktionieren wie erwartet.Wordpress benutzerdefinierte Querystrings & Pretty URLs - Wie?

Ich habe 1 dynamische Seite, die Inhalte in Abhängigkeit von der Abfragezeichenfolgeflag lädt:

/dynamic/?loc=england&code=uk 

Ich mag diese URL machen „ziemlich“ oder aber jede Zeit ich die .htaccess keine Änderungen vorgenommen werden ändern. Versuchte alles und googelte alles andere - letzter Ausweg. Wenn ich folgendes zur Arbeit bringen könnte, wäre ich glücklich.

Ich muss die URL wie aussehen.

/dynamic/location/england/code/uk/ 

Wenn Sie dies zu einem beliebigen .htaccess hinzufügen, wird die gesamte Website unterbrochen.

RewriteRule /dynamic/(.*)/(.*)/(.*)/(.*)/$ /dynamic?$1=$2&$3=$4 

Was fehlt mir.

Vielen Dank im Voraus

N

+0

Haben Sie versucht, '/ dynamic/location/england/code/uk /' zu besuchen, oder erfrischen Sie gerade auf der nicht hübschen Seite? – andrewk

Antwort

11

Sie die Rewrite-Regel auf Ihre .htaccess Datei nicht hinzufügen. WordPress verwaltet diese Datei für Sie. Versuchen Sie daher, die integrierten Funktionen so oft wie möglich zu verwenden.

WordPress hat tatsächlich eine etwas fortgeschrittene rewrite engine, die Standard - und es ist steckbar wie der Rest der Plattform.

Der Trick, jedoch, arbeitet damit. Sie müssen Ihre RegEx registrieren, damit WordPress weiß, welche Arten von Zeichenfolgen übereinstimmen (d. H. dynamic/location/(.*)/code/(.*) =>/dynamic?$loc=$1&code=$2). Dann müssen Sie die Seite und das Skript am Backend einrichten, um die Einreichung zu bearbeiten.

Für ein ähnliches Beispiel, schau auf die Antwort, die ich erhalten, um benutzerdefinierte URLs mit einem benutzerdefinierten Beitragstyp über WordPress Answers zu analysieren. Die Ausweitung dieses, müssen Sie Code ähnlich dem folgenden einzurichten (Anmerkung: ungetestet !!!):

<?php 
add_action('init', 'add_my_rewrite'); 

function add_my_rewrite() { 
    global $wp_rewrite; 
    $wp_rewrite->add_rule('location/([^/]+)/code/([^/]+)','index.php?loc=$matches[1]&code=$matches[2]','top'); 
    $wp_rewrite->flush_rules(false); // This should really be done in a plugin activation 
} 

Diese sollte die Rewrite-Struktur auf Ihre .htaccess Datei automatisch hinzufügen.

+0

Wenn Sie die geladenen Rewrite-Regeln später analysieren möchten, empfehle ich [Jan Fabry's Rewrite Analyzer-Plug-In] (http://wordpress.stackexchange.com/questions/3606/a-tool-to-analyze-rewrite) -Regeln). – EAMann

+0

Schöne Antwort, nur um diese Frage ein wenig zu erweitern: Theres eine Möglichkeit zu konvertieren: http: //www.mysite.lh/? User = josoroma in http: //www.mysite.lh/josoroma Vielen Dank im Voraus. –

+0

Ich hatte große Schwierigkeiten, diese Rewrite-Regeln zu bekommen. Dein '([^ /] +)' Format für die Regex funktionierte für mich. Vielen Dank! – Gavin

Verwandte Themen