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.

Était-ce utile?

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top