get('post_type') !== 'product') return;
$tax_query = $query->get('tax_query');
if (!is_array($tax_query)) $tax_query = [];
$sold_slugs = ['sold', 'vendu'];
// Vérifie si la requête cible déjà Sold/Vendu
$targets_sold = false;
foreach ($tax_query as $clause) {
if (isset($clause['taxonomy']) && $clause['taxonomy'] === 'product_cat') {
if (isset($clause['terms'])) {
$terms = (array) $clause['terms'];
foreach ($terms as $term) {
if (in_array(strtolower((string)$term), $sold_slugs, true)) {
$targets_sold = true;
break 2;
}
}
}
}
}
if (!$targets_sold) {
$tax_query[] = [
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => $sold_slugs,
'operator' => 'NOT IN',
];
$query->set('tax_query', $tax_query);
}
}, 20);