J'utilise la requête suivante pour extraire tous les produits qui ne font pas partie de la catégorie de produits "Service" et pour les commander par un méta-champ personnalisé "_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'
));
Je dois maintenant étendre cette requête aux produits EXCLUDE qui ont été modifiés avec la catégorie product_category 'Vendu' il y a plus d'un mois (c'est-à-dire tous les produits non vendus, non servis et tous les produits vendus le mois dernier). Mon hypothèse est d'utiliser quelque chose comme ceci, mais comment puis-je l'appliquer uniquement aux produits "Vendus" ET l'ajouter à ma requête initiale?
array(
'date_query' => array(
array(
'column' => 'post_modified_gmt',
'after' => '1 month ago',
),
))
Merci d'avance pour votre aide!
Je crains qu'il n'y ait aucun moyen de faire de telles requêtes avancées en utilisant WP_Query.
Bien sûr, vous pouvez toujours obtenir ce résultat, mais vous devrez écrire un peu plus de code.
Il y a deux solutions:
Il est difficile de vous donner un code précis, car votre question ne contient pas beaucoup de détails, mais cela suffira peut-être :)
posts_where
et posts_join
Si vous n'avez pas peur d'écrire vos propres requêtes SQL, vous pouvez utiliser les filtres posts_where
et posts_join
pour ajouter des conditions SQL plus avancées à votre WP_Query.
Si vous n'aimez pas le SQL brut, vous pouvez utiliser un second WP_Query. Utilisez-le pour sélectionner toutes les publications que vous souhaitez exclure. Ensuite, vous pouvez utiliser leurs ID et les transmettre en tant que post__not_in
param à votre WP_Query actuel - de cette façon, vous les excluez.