Der WordPress-Operator "tax_query" und "funktioniert nicht wie gewünscht

7

Ich habe einen benutzerdefinierten Post- Bildtyp mit einer benutzerdefinierten Taxonomie namens image_tag (hierarchisch wie Kategorien). Hier sind einige Beispiele für die Tags, die verwendet werden könnten:

Structure (id: 25)
- House (id: 56)
- Skyscraper
Nature
- Animal
- Plant (id: 41)

Daher möchte ich einen Drilldown durch die Bilder durchführen, indem ich mehrere Tags in Verbindung mit dem Operator "und" auswähle. Zum Beispiel finden Sie alle Fotos mit Pflanzen s und Haus s.

$query_args = array(
  'post_type' => 'image',
  'tax_query' => array(
    array(
      'taxonomy' => 'image_tag',
      'terms' => array(41, 56),    // IDs of "plant" and "house"
      'operator' => 'and',
    ),
  ),
);

Das funktioniert gut, das Problem beginnt, wenn ich versuche, die übergeordneten Begriffe einzuschließen, zum Beispiel:

$query_args = array(
  'post_type' => 'image',
  'tax_query' => array(
    array(
      'taxonomy' => 'image_tag',
      'terms' => array(25, 41),    // IDs of "structure" and "plant"
      'operator' => 'and',
    ),
  ),
);

Dann bekomme ich keine Ergebnisse. Ich vermute, dass Wordpress die untergeordneten Elemente des Begriffs "Struktur" nicht enthält, da ich den Operator "und" verwende. Hat jemand eine Idee, wie ich das zum Laufen bringen kann, oder eine andere Lösung, um dies zu erreichen?

dkeeling
quelle

Antworten:

10

nicht getestet, aber probieren Sie es aus

'tax_query' => array(
   'relation' => 'AND',
    array(
      'taxonomy' => 'image_tag',
      'field'    => 'term_id',
      'terms'    => 25,
      'operator' => 'IN',
    ),
    array(
      'taxonomy' => 'image_tag',
      'field'    => 'term_id',
      'terms'    => 41,
      'operator' => 'IN',
    )
  ),

ODER

'tax_query' => array(
   'relation' => 'AND',
    array(
      'taxonomy' => 'image_tag',
      'field'    => 'term_id',
      'terms'    => array(25,41),
      'operator' => 'IN',
    ),
  ),
Jeff
quelle
3
Vielen Dank für Ihre Zeit! Für alle anderen, die dies finden, ist die erste Lösung die richtige.
Dkeeling