web-dev-qa-db-fra.com

Avertissement: urlencode () s'attend à ce que le paramètre 1 soit une chaîne, tableau donné

J'ai posté une question sur StackOverflow (désolé pour le lien croisé) et, tandis que je m'efforçais de trouver une solution à ce problème, je suis tombé sur cet avertissement:

Attention: urlencode () s'attend à ce que le paramètre 1 soit une chaîne, tableau donné dans /var/www/.../httpdocs/wp-includes/formatting.php à la ligne 3192

Et en faisant une trace, je trouve que cela provient de query.php:

wp_includes/query.php , lignes 1710 à 1712

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

Maintenant, j'obtiens cette erreur, car l'un de mes paramètres d'URL est un tableau de catégories, dans lequel j'essaie de rechercher et de renvoyer tous les produits (type de publication personnalisé) auxquels une ou plusieurs des catégories définies ont été attribuées.

Pourquoi WordPress essaie-t-il d'appeler basename sur un tableau de GET paramètre me dépasse. Quelqu'un veut-il m'expliquer cela? Merci!

3
Yanick Rochon

Je ne sais pas exactement ce qui se passe, mais je peux deviner à partir de quelques indices de contexte. Cette fonction particulière est parse_tax_query. Il semble vérifier si la taxonomie est hiérarchique, je suppose qu'elle attend une chaîne qui pourrait éventuellement être un chemin de termes parent/enfant. Il utilise donc basename pour obtenir le terme demandé - la ligne suivante est $term = $q[$t->query_var];

3
Milo