Vérifiez si variable est définie dans le filtre
-
16-10-2019 - |
Question
Merci à vos suggestions, je permis wp_debug et a découvert des défauts avec mon plug-in. J'ai un filtre pour trier les messages par votes. Je l'utilise lorsque le paramètre d'URL sort
est activée.
add_filter( 'posts_where', 'votes', 10, 2 );
Je l'habitude d'obtenir Undefined index: sort
donc je modifié ma fonction d'abord vérifier si la variable est définie.
function votes( $where, $query )
{
$sort = array_key_exists('sort', $query->query_vars) ? $_GET['sort'] : null;
if ( isset($sort) ) {
$where .= " AND $sort >= votes";
}
return $where;
}
Cela fonctionne bien, mais je ne suis pas sûr si elle est correcte. Je me demande s'il y a une meilleure méthode pour le faire.
La solution
La variable que vous avez nommé $query
est en fait l'instance WP_Query ayant des filtres appliqués.
Vous pouvez simplement appeler sa fonction get
pour récupérer requête vars.
Par exemple:
function votes( $where, $query )
{
$sort = $query->get('sort');
if (!empty($sort)
$where .= " AND $sort >= votes";
return $where;
}
Autres conseils
Si vous vérifiez $query->query_vars
d'abord, mais ensuite utiliser $_GET['sort']
plus tard, vous venez de vérifier ou à utiliser la mauvaise variable. Je pense que cela vient de se produire lorsque vous avez modifié le script.
vous vouliez sans doute écrire ceci:
$sort = array_key_exists('sort', $query->query_vars) ? $query->query_vars['sort'] : null;