Mit der folgenden Abfrage extrahiere ich alle Produkte, die nicht in der Produktkategorie "Service" enthalten sind, und ordne sie nach einem benutzerdefinierten Metafeld "_vintage_age".
$q->set( 'tax_query', array(array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'Service' ),
'operator' => 'NOT IN'
)));
$q->set('meta_query',array(array(
'vtp_age' => array(
'key' => '_vintage_age',
'value' => array(1,2,3),
'compare' => 'IN'
))));
$q->set('orderby',array(
'vtp_age' => 'ASC',
'date' => 'ASC'
));
Ich muss diese Abfrage jetzt auf EXCLUDE-Produkte erweitern, die vor mehr als einem Monat mit der product_category 'Verkauft' geändert wurden (dh alle nicht verkauften, nicht gewarteten Produkte und alle im letzten Monat verkauften Produkte anzeigen). Ich rate, so etwas zu verwenden, aber wie wende ich dies nur auf "Verkaufte" Produkte an UND füge es meiner ursprünglichen Abfrage hinzu?
array(
'date_query' => array(
array(
'column' => 'post_modified_gmt',
'after' => '1 month ago',
),
))
Vielen Dank im Voraus für jede Hilfe!
Ich befürchte, dass es keine Möglichkeit gibt, solche erweiterten Abfragen mit WP_Query durchzuführen.
Natürlich können Sie dieses Ergebnis immer noch erzielen, aber Sie müssen etwas mehr Code schreiben.
Es gibt zwei Lösungen:
Es ist schwierig, Ihnen präzisen Code zu geben, da Ihre Frage nicht viele Details enthält, aber vielleicht reicht das :)
posts_where
und posts_join
Wenn Sie keine Angst haben, eigene SQL-Abfragen zu schreiben, können Sie mit den Filtern posts_where
und posts_join
erweiterte SQL-Bedingungen zu Ihrer WP_Query hinzufügen.
Wenn Sie Raw SQL nicht mögen, können Sie die zweite WP_Query verwenden. Verwenden Sie diese Option, um alle Beiträge auszuwählen, die Sie ausschließen möchten. Dann können Sie ihre IDs verwenden und sie als post__not_in
param an Ihre aktuelle WP_Query übergeben - auf diese Weise schließen Sie sie aus.