Änderung der Hauptabfrage zur Abfrage von Bereichen zB von 1999 bis 2016

Ich habe Taxonomie _year und ich modifiziere Hauptabfrage, indem ich mich in pre_get_posts Aktion pre_get_posts .

Mein Code sieht so aus:

  if ( ! empty( $_GET['mt-from-year'] ) ) { $from_year = sanitize_title_for_query( $_GET['mt-from-year'] ); if ( ! empty( $_GET['mt-to-year'] ) ) { $to_year = sanitize_title_for_query( $_GET['mt-to-year'] ); $query->set( $post_type . '_year', range( $from_year, $to_year ) ); } else { $query->set( $post_type . '_year', range( $from_year, date('Y') ) ); } } 

Jetzt funktioniert das gut. Aber ich möchte eine _price Taxonomie erstellen, offensichtlich range( 0, 10000000 ); könnte leistungsmäßig ein Problem werden und auch das Speicherlimit erreichen.

Also meine Frage ist dreifach:

  1. Würden Sie _year so lassen wie es ist? da Bereiche relativ klein sind, z. B. 1900 - 2016
  2. Im Falle von _price würden Sie immer mit Reichweite gehen? oder eine andere Abfrage implementieren?
  3. Graben Taxonomie für _price und postmeta – Problem hier ist, dass Metas sind nicht gut in WP optimiert, so würde ich Index zu value col hinzufügen müssen.

Solutions Collecting From Web of "Änderung der Hauptabfrage zur Abfrage von Bereichen zB von 1999 bis 2016"

Begriffe sind Gruppierungsmechanismen . Die Abfragelogik für sie ist meist auf Übereinstimmung oder Nicht-Übereinstimmung beschränkt, wodurch Sie in Ihrem Fall riesige Arrays mit vielen möglichen Werten verwenden.

Während das Jahr passabel eine Gruppe ist (vielleicht auch nicht sinnvoll), ist der Preis definitiv nicht. Würden Sie im Laden einkaufen, wo die Artikel auf der Insel nach Preis sortiert sind? Insel mit allen $ 1, Insel mit allen $ 2 und so weiter?

Diskrete Einzelwerte sind fester Bestandteil des Post-Metas. Meta erlaubt auch viel flexiblere Abfragen, wie BETWEEN für Ihren Anwendungsfall.

Ich bin mir nicht sicher, warum Sie es für “nicht gut optimiert” halten, aber es wäre sicherlich ein besserer Ausgangspunkt für Bereichsabfragen als Begriffe.