Sobald ich einen benutzerdefinierten query_var mithilfe des Filters hinzufüge, zeigen meine Seiten auf eine Archivseite – warum?

Es gibt eine Million Beiträge zum Thema in diesem Stack-Austausch, und aus irgendeinem Grund kann ich das nicht für mich arbeiten. Ich frage mich, was ich falsch mache?

In meiner functions.php definiere ich dies:

add_filter('query_vars', 'add_quote_query_vars'); function add_quote_query_vars($qv){ $qv[] = 'xx-quote'; return $qv; } 

Dann, später, auf front_page.php stelle ich einen Link zur Verfügung, der dies in die URL einbettet:

 echo 'ID).'">'; 

Zwei Dinge gehen schief. 1: wenn, auf meiner Vorlagenseite ich print_r($wp_query->query_vars); , mein ‘xx-quote’ erscheint nicht in der Liste 2: sobald ich versuche, das in die URL aufzunehmen (indem ich auf den Link klicke, ist die URL http://mysite.com/blog/?xx-quote=555 ) Ich bin auf eine Archivseite statt der erwarteten Titelseite gebracht.

Interessant an # 2 ist, dass ich, sobald ich den query_vars Filter entferne und erneut auf den Link query_vars , wie erwartet auf die Titelseite gebracht werde.

Versteh ich die Rolle von query_vars einfach nicht? Ist das erwartetes Verhalten? Oder rufe ich den Filter zur falschen Zeit an (ich habe versucht, ihn in eine init-Aktion zu verpacken oder sogar innerhalb von functions.php).

Ich weiß, dass ich das alles einfach ignorieren kann, da ich sowieso mit der front_page.php zu tun habe und einfach $ _REQUEST [‘xx-quote’] benutze, aber das scheint überhaupt keine Best Practice zu sein, und ich bin es auch versuche es “den WordPress-Weg” zu machen …

Unnötig zu sagen, dass der folgende Code keine Ergebnisse liefert:

 global $wp_query; echo $wp_query->query_vars['xx-quote']; 

Und das ist die Grundlage meiner Verwirrung. Ich habe alle zugehörigen Posts auf dieser SE gelesen und ich scheint alles richtig zu machen. Klar bin ich nicht – was ist falsch gelaufen?

Solutions Collecting From Web of "Sobald ich einen benutzerdefinierten query_var mithilfe des Filters hinzufüge, zeigen meine Seiten auf eine Archivseite – warum?"

Ich hatte ein ähnliches Problem und verfolgte es zurück zu Yoast WordPress SEO Plugin. Dies ist ein sehr beliebtes Plugin, also wollte ich meinen Fix posten. Wenn Sie dieses Plugin ausführen, gehen Sie folgendermaßen vor:

  1. Navigiere zu SEO> Permalinks
  2. Ist “Hässliche URLs zum Säubern von Permalinks redirect” aktiviert?
  3. Ist dies der Fall, scrollen Sie nach unten zum Eingabefeld “Andere nicht zu reinigende Variablen” und geben Sie die Parameter ein, die Sie zulassen möchten.

Das hat es für mich behoben.

Vom Schnelltest mit dem aktiven Filter funktioniert das letzte Testschnipsel ganz gut für mich. Auch ich werde nicht von der Homepage weitergeleitet, wenn es dort ist.

Es ist also nicht deine Vorgehensweise, die falsch ist, aber etwas scheint es zu brechen.