web-dev-qa-db-de.com

Warnung: urlencode () erwartet, dass Parameter 1 ein String ist, ein angegebenes Array

Ich habe eine Frage auf StackOverflow gepostet (Entschuldigung für den Querverweis) und während ich mich bemühe, eine Lösung dafür zu finden, bin ich auf diese Warnung gestoßen:

Warnung: urlencode () erwartet, dass Parameter 1 ein String ist, ein Array, das in /var/www/.../httpdocs/wp-includes/formatting.php in Zeile 3192 angegeben ist

Und wenn ich einen Backtrace mache, finde ich, dass er aus query.php stammt:

wp_includes/query.php , Zeilen 1710 ... 1712

if ( isset( $t->rewrite['hierarchical'] ) && $t->rewrite['hierarchical'] ) {
     $q[$t->query_var] = wp_basename( $q[$t->query_var] );
}

Jetzt erhalte ich diesen Fehler, weil einer meiner URL-Parameter ein Array von Kategorien ist, in denen ich versuche, alle Produkte (benutzerdefinierter Beitragstyp) zu suchen und zurückzugeben, denen eine oder mehrere der definierten Kategorien zugewiesen sind.

Warum WordPress versucht, basename für ein Array von GET-Parametern aufzurufen, ist mir ein Rätsel. Möchte mir jemand das erklären? Vielen Dank!

3
Yanick Rochon

Ich bin mir nicht sicher, was genau passiert, aber ich kann anhand einiger Kontexthinweise raten. Diese bestimmte Funktion ist parse_tax_query. Es scheint zu prüfen, ob die Taxonomie hierarchisch ist. Ich gehe davon aus, dass eine Zeichenfolge erwartet wird, bei der es sich möglicherweise um einen über-/untergeordneten Pfad von Begriffen handelt. Daher wird der tatsächliche Begriff anhand des Basisnamens abgefragt. Die nächste Zeile lautet $term = $q[$t->query_var];.

3
Milo