Ich habe ein benutzerdefiniertes Post-Type-Produkt (Wein). Jedes der folgenden Elemente ist eine benutzerdefinierte Taxonomie:
In der Einzelproduktansicht eines Weins möchte ich folgende Abfragen durchführen:
1) Finden Sie alle Weine, die dieselbe Familie , dieselbe Größe haben, aber aus einem anderen Jahrgang stammen
2) Finden Sie alle Weine (Posttyp: Produkt), die zur gleichen Familie gehören UND denselben Jahrgang UND unterschiedliche Größe haben.
Nun das Problem: Das numerische Jahr ist eine benutzerdefinierte Meta-Eigenschaft des Vintage-Terms . Die numerische Flaschengröße ist eine benutzerdefinierte Meta-Eigenschaft des Größenbegriffs.
Bei der ersten Abfrage habe ich Folgendes versucht:
$other_years = get_posts(array(
'post_type' => 'product',
'numberposts' => -1,
'tax_query' => array(
array(
'taxonomy' => 'family',
'field' => 'id',
'terms' => $family->term_id, // Where term_id of Term 1 is "1".
'include_children' => false
),
array(
'taxonomy' => 'size',
'field' => 'id',
'terms' => $size->term_id, // Where term_id of Term 1 is "1".
'include_children' => false
),
array(
'taxonomy' => 'vintage',
'field' => 'id',
'terms' => array($vintage->term_id), // Where term_id of Term 1 is "1".
'include_children' => false,
'operator' => 'NOT IN'
),
)
));
Es klappt. Allerdings: Anstatt die term_id (hier: term id of vintage) zu vergleichen, möchte ich vergleichen, ob der Begriff benutzerdefinierter Metawert (year_numeric) unterschiedlich ist.
Gibt es eine Möglichkeit, eine solche Abfrage durchzuführen?
AFAIK: Es gibt keine Möglichkeit, dies in einer einzelnen WP_Query zu erreichen. Daher müssen Sie zuerst eine Liste von term_ids abrufen, die ein anderes Jahr als das fragliche Jahr haben.
Ich denke mit dem Folgenden kommen Sie ganz nah. (Sie müssen nicht sofort ein Env testen)
$other_years_terms = get_terms(
'taxonomy' => 'vintage',
'meta_key' => 'year_numeric',
'meta_value' => $the_current_wine_year, // You'll have to figure that out
'meta_compare' => '!=',
'fields' => 'ids'
);
$other_years_posts = get_posts(array(
'post_type' => 'product',
'numberposts' => -1,
'tax_query' => array(
array(
'taxonomy' => 'family',
'field' => 'id',
'terms' => $family->term_id, // Where term_id of Term 1 is "1".
'include_children' => false
),
array(
'taxonomy' => 'size',
'field' => 'id',
'terms' => $size->term_id, // Where term_id of Term 1 is "1".
'include_children' => false
),
array(
'taxonomy' => 'vintage',
'field' => 'term_id',
'terms' => $other_years_terms,
),
)
));
Ich glaube, Sie überprüfen, ob ein Metaschlüssel nicht vorhanden ist.
Bitte beziehe dich auf diese ähnliche Frage: frage alle Beiträge ab, bei denen kein Metaschlüssel existiert