Willst du nach Meta-Werten bestellen (Tweaking Post Order Widget)

Ich bin nicht viel von einem Programmierer, aber ich kann PHP ein bisschen zwicken. Grundsätzlich möchte ich nach einem benutzerdefinierten Meta-Wert die ganze Zahl “Preis” bestellen. Das Plugin sortiert nach Titel, so dass das, was ich in den Preis ändere, hier gezeigt wird. Ich sah einige andere Posts über das Ordnen nach einer Metawert-Ganzzahl, aber die Codelogik war zu unterschiedlich für meine schlechten Codiererfähigkeiten, um mit dem Code im Plugin abzustimmen. Irgendeine Hilfe?

case 'title': $orderby = "price"; $order = "ASC"; break; 

Hier ist die gesamte function:

  public function frontend_initialiser($vars){ //Requête modifiable uniquement pour la toute première requête SQL. if(is_main_query() && $this->firstQuery){ $this->firstQuery = FALSE; //On récupère la sélection de l'utilisateur $this->selection = isset($_GET['pow']) ? $_GET['pow'] : ""; //Calcul du type (uniquement ceux gérés par l'extension) de taxonomie en cours. if(is_category()){ $this->type = "category"; }elseif(is_tag()){ $this->type = "post_tag"; } //Si le type est géré par l'extension, on récupère le slug courant. if($this->type != '')$this->slug = $vars->query_vars[$this->type . "_name"]; //Le visiteur n'a pas demandé à changer le tri. if($this->selection == ''){ //Par défaut, on garde le tri par défaut. $this->selection = self::POW_DEFAUT; //Maintenant, on va regarder si le tri par défaut ne serait pas différent de celui définit nativement if($this->slug != ''){ //Recovering the conf different for different type of taxonomy $terms = $this->select_term($this->type); //If you look at the admin changed the default sort . if(array_key_exists($this->type, $terms) && array_key_exists($this->slug, $terms[$this->type]))$this->selection = $terms[$this->type][$this->slug]; } } // We end up modifying the ORDER BY clause of the query. switch ($this->selection) { //Sélection par défaut : Tri du plus récent au plus ancien case 'dated': $orderby = "date"; $order = "DESC"; break; //Tri du plus ancien au plus récent case 'datea': $orderby = "date"; $order = "ASC"; break; //TRYING TO CHANGE CODE TO ORDER BY PRICE METAKEY VALUE case 'title': $orderby = "price"; $order = "ASC"; break; //for simple cases , the value of the item of the combo is what will be used in the " order by " of the SQL query . default: $orderby = $this->selection; $order = "DESC"; } //On applique le filtre $vars->set('orderby', $orderby); $vars->set('order', $order); } return $vars; } 

Solutions Collecting From Web of "Willst du nach Meta-Werten bestellen (Tweaking Post Order Widget)"

Da der price keine Post-Tabellen-Spalte ist (ich gehe davon aus, dass es sich um ein Post-Meta-Feld handelt), müssen meta_value_num stattdessen die Abfrage und Reihenfolge um meta_value_num :

 case 'title': if ( ! $meta_query = $vars->get( 'meta_query' ) ) $meta_query = array(); $meta_query[] = array( 'compare' => '!=', 'value' => '', 'key' => 'price', /* This should be the name of your meta field that stores price */ ); $vars->set( 'meta_query', $meta_query ); $orderby = 'meta_value_num'; $order = 'ASC'; break;