GEHEN SIE ZU EDIT8, UM ZU SEHEN, WIE ICH DAS GELÖST HABE
Nehmen wir an, ich habe einen WordPress-Blog: www.animals.com
. Ich habe eine bestimmte PHP-Datei in meinem Themenverzeichnis: www.animals.com/wp-content/themes/mytheme/db.php
. Außerdem habe ich eine benutzerdefinierte Vorlage für diese Seite, also erstelle ich eine neue Seite im WordPress-Administrationsbereich, um sie anzuzeigen db.php
: www.animals.com/database
.
Wenn ich also etwas über Löwen lesen möchte, gehe ich einfach zu: www.animals.com/database/?animal=lion
(denn so habe ich mich entschieden, PHP zu schreiben, indem ich den Wert von $_GET eingefügt habe[‘animal’] in die Abfrage, per PDO etc.).
Nun möchte ich zugreifen www.animals.com/database/?animal=lion
als www.animals.com/lion
.
Soll ich .htaccess oder WordPress Rewrite verwenden? Wo soll ich meine .htaccess-Datei ablegen, im Stammverzeichnis des WordPress-Ordners (mit wp-config.php und diesen Dateien) oder in meinem Theme-Verzeichnis?
Der von der Wurzel hat RewriteBase /
und Sachen von WordPress standardmäßig. Was soll ich schreiben, um das zu erreichen, was ich will? Soll ich es vor oder nach dem vorhandenen Code setzen?
BEARBEITEN: das ist mein public_html .htaccess und das habe ich Ja wirklich tun möchte: Ich habe eine Website: www.domain.com
und wenn Sie dies eingeben http://www.domain.com/dios/?dios=agni
Es zeigt Ihnen die Informationen über den Gott Agni. Ich möchte tippen www.domain.com/dioses/agni
um auf die Informationen über den Gott Agni zuzugreifen. Die PHP-Datei ist drin www.domain.com/wp-content/themes/smitespain/dios.php
Es funktioniert nicht x_x
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^dioses/(\w*)$ dios/?dios=$1 [NC,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
EDIT2: Ich verwende Multisite (siehe EDIT4)und wieder /database/ /dios/ und /dioses/ sind nicht Tatsächliche Ordner, die ich erstellt habe, das ist der Name für die Seite, die ich in WordPress erstellt habe. Die Sache ist, jetzt zeigt es den Namen des Gottes im Tab-Titel :S, das bedeutet die Variable $_GET[‘dios’] gesetzt ist, aber die Datei (dios.php) wird nicht geladen =/
EDIT3: Ich muss speziell auf domain.com/dios/?dios=agni zugreifen, da dies die URL ist, die es der PHP-Datei (dios.php) ermöglicht, get_header() von WordPress zu laden, sodass ich nicht direkt auf die Datei zugreifen kann
EDIT4: Ich habe beschlossen, das Multisite-Ding zu entfernen
BEARBEITEN5: Dies sind die WordPress-Seiten, die ich habe:
domain.com/dioses/
zum (www.domain.com/wp-content/themes/smitespain/dioses.php)
domain.com/dios/?dios=thor
zum (www.domain.com/wp-content/themes/smitespain/dios.php)
BEARBEITEN6: Ich habe etwas im WordPress-Codex gelesen … und festgestellt, dass, wenn ich gehen möchte domain.com/dioses
Ich kann darauf zugreifen, indem ich zu gehe domain.com/index.php?pagename=dioses
oder domain.com/?pagename=dioses
Also fügte ich dies zwischen den hinzu Rewritebase /
und die nächste Regel: RewriteRule example/test ?pagename=dioses
und domain.com/example/test
leitet mich weiter domain.com/dioses
aber es ändert auch die URL in der Adressleiste 🙁
Die Sache ist, wenn ich das versuche: RewriteRule example/test ?pagename=dios&dios=thor
es schickt mich auf die Seite ‘dios’ ohne das ‘?dios=thor’
EDIT7: Ich habe angefangen, WordPress Rewrite zu verwenden, ich habe dies zu der functions.php meines Themas hinzugefügt:
function my_rewrite_rules() {
add_rewrite_rule(
'blah',
'index.php?pagename=dios&dios=agni',
'top'
);
}
add_action( 'init', 'my_rewrite_rules' );
und wieder … es lädt die Seite dios, ohne das ?dios=agni
BEARBEITEN8: und endlich habe ich es geschafft, dass es funktioniert =)
Das erste, was ich wissen musste, war das Neue ?dios=XXXX
wird nicht mehr zur Verfügung stehen $_GET['dios']
Stattdessen müssen Sie anrufen $wp_query->query_vars['dios']
Also habe ich dies zu der functions.php meines Themas hinzugefügt
function add_query_vars($new_var) {
$new_var[] = "dios";
return $new_var;
}
add_filter('query_vars', 'add_query_vars');
function add_rewrite_rules($rules) {
$new_rules = array('([^/]+)' => 'index.php?pagename=dios&dios=$matches[1]');
$rules = $new_rules + $rules;
return $rules;
}
add_filter('rewrite_rules_array', 'add_rewrite_rules');
Ich stelle sicher $wp_query->query_vars['dios']
ist eigentlich eingestellt
dann füge ich einfach die reguläre Regel hinzu
+1, um die Lösung zu teilen und detailliert zu sein.
– Ravi K. Thapliyal
22. Mai 2013 um 14:03 Uhr
Danke Alter, du hast mir tatsächlich VIEL geholfen 😀 Danke, dass du deine Zeit damit verbracht hast =) (ich würde dir +1 geben, aber ich habe immer noch 15 Wiederholungspunkte xDDD)
– JohnRivs
23. Mai 2013 um 4:32 Uhr