Frage

Dank Ihrer Vorschläge habe ich WP_DEBUG aktiviert und Fehler mit meinem Plugin entdeckt. Ich habe einen Filter, um Posts nach Stimmen zu sortieren. Ich benutze es, wenn die sort Der URL -Parameter ist eingeschaltet.

add_filter( 'posts_where', 'votes', 10, 2 );

Ich habe früher bekommen Undefined index: sort Daher habe ich meine Funktion geändert, um zuerst zu überprüfen, ob die Variable festgelegt ist.

function votes( $where, $query )
{
  $sort = array_key_exists('sort', $query->query_vars) ? $_GET['sort'] : null;
  if ( isset($sort) ) {         
       $where .= " AND $sort >= votes";               
  }
  return $where;
}

Das funktioniert gut, aber ich bin nicht zuversichtlich, ob es richtig ist. Ich frage mich, ob es eine bessere Methode gibt, dies zu tun.

War es hilfreich?

Lösung

Die Variable, die Sie benannt haben $query Ist tatsächlich die WP_Query -Instanz, in der Filter darauf angewendet werden.

Sie können einfach seine Funktion aufrufen get Um Abfragen -Vars abzurufen.

Zum Beispiel:

function votes( $where, $query )
{
    $sort = $query->get('sort');
    if (!empty($sort)
        $where .= " AND $sort >= votes";
    return $where;
}

Andere Tipps

Wenn Sie nach suchen nach $query->query_vars zuerst aber dann benutze $_GET['sort'] Später haben Sie gerade die falsche Variable überprüft oder verwendet. Ich denke, das ist gerade passiert, als Sie das Drehbuch bearbeitet haben.

Sie wollten wahrscheinlich Folgendes schreiben:

 $sort = array_key_exists('sort', $query->query_vars) ? $query->query_vars['sort'] : null;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit wordpress.stackexchange
scroll top