Ich versuche, eine Abfrage-Variable an eine benutzerdefinierte Seitenvorlage mit hübschen Permalinks zu übergeben.
Also im Grunde habe ich eine Seite namens "Alben". Und ich möchte eine Abfragevariable an diese Seite mit dem Namen "Typ" übergeben. Die nicht-hübsche Version wäre also mywebsite.com/index.php?p=97&type=vinyl
die "hübsche" Version wäre mywebsite.com/albums/vinyls
Und die Vorlage muss dann diese Variable (d. H. Vinyls) abrufen
Ich habe den ganzen Tag viel darüber gelesen, kann es aber immer noch nicht zum Laufen bringen. Also hoffte ich, dass eine Art Seele hier mir helfen würde.
Also erstmal füge ich den Rewrite zu meiner functions.php hinzu:
function addrewrite() {
add_rewrite_rule( '^albums/([^/]+)/?$',
'index.php?p=97&type=$matches[1]',
'top' );
}
add_action('init', 'addrewrite');
Dies scheint zu funktionieren, da ich sehen kann, dass es auftaucht, wenn ein var_dump aller Umschreibungen abgerufen wird.
Wenn ich jetzt einen Test mache und mywebsite.com/albums/vinyl in meinen Browser eingebe, entfernt WordPress das letzte bisschen "Vinyl". Ich habe ein paar Stellen gelesen, die das sind, weil ich die Abfrage var auch registrieren muss. Also habe ich das mit dem folgenden Code gemacht:
add_filter('query_vars', 'add_my_var');
function add_my_var($public_query_vars) {
$public_query_vars[] = 'type';
return $public_query_vars;
}
Dann habe ich die Permalinks gelöscht, indem ich in den Einstellungen -> Permalinks auf Speichern geklickt habe. und doch streift wordpress meine url immer noch ab.
Was vermisse ich hier?
Ändern Sie für eine Seite p=97
in page_id=97
oder pagename=albums
. p
ist für den Beitragstyp post
vorgesehen.
Ich schlage auch vor, Ihre Abfrage var zu etwas Einzigartigem zu ändern.