Nous avons une option pour Afficher uniquement les produits de gros aux clients de gros. Cependant, cette fonctionnalité ne masquera pas les catégories de détail affichées dans votre boutique.
Heureusement, il existe des extraits personnalisés que vous pouvez utiliser pour masquer les catégories de détail indésirables de vos utilisateurs de gros. Veuillez ajouter l'extrait suivant au fichier function.php de votre thème enfant.
Veuillez noter que la fonctionnalité Afficher uniquement les produits de gros aux clients de gros doit être activée pour que l'extrait fonctionne. Elle se trouve dans Woocommerce > Paramètres > Prix de gros > Général.
add_filter('get_terms', function ($terms, $tax, $qvars, $term_query) {
if (is_shop() || is_product_category()) {
global $wc_wholesale_prices_premium;
if (!isset($wc_wholesale_prices_premium)) {
return $terms;
}
$user_wholesale_role = $wc_wholesale_prices_premium->wwpp_wholesale_roles->getUserWholesaleRole();
$wholesale_role = isset($user_wholesale_role[0]) ? $user_wholesale_role[0] : '';
foreach ($terms as $key => $term) {
// Ensure $term is an object before accessing its properties
if (!is_object($term) || !isset($term->term_id)) {
continue; // Skip this term if invalid
}
$product_ids = array();
$products = WWPP_WPDB_Helper::get_products_by_category($term->term_id) ?? array();
foreach ($products as $product) {
if (is_object($product) && isset($product->ID)) { // Added check for object validity
$product_ids[] = $product->ID;
}
}
if (!empty($wholesale_role)) {
$restricted_cat_ids = $wc_wholesale_prices_premium->wwpp_query->_get_restricted_product_cat_ids_for_wholesale_user($wholesale_role);
} else {
$restricted_cat_ids = get_option(WWPP_OPTION_PRODUCT_CAT_WHOLESALE_ROLE_FILTER, array());
}
$restricted_cat_ids = !empty($restricted_cat_ids) ? array_map('intval', $restricted_cat_ids) : array();
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1,
'fields' => 'ids',
'post__in' => $product_ids,
'meta_query' => array(
array(
'key' => WWPP_PRODUCT_WHOLESALE_VISIBILITY_FILTER,
'value' => array($wholesale_role, 'all'),
'compare' => 'IN'
)
),
'tax_query' => empty($restricted_cat_ids) ? array() : array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $restricted_cat_ids,
'operator' => 'NOT IN'
)
)
);
if (!empty($user_wholesale_role) &&
get_option('wwpp_settings_only_show_wholesale_products_to_wholesale_users') === 'yes' &&
!WWPP_Helper_Functions::_wholesale_user_have_override_per_user_discount($user_wholesale_role) &&
!WWPP_Helper_Functions::_wholesale_user_have_general_role_discount($wholesale_role)) {
$args['meta_query'][] = array(
'relation' => 'OR',
array(
'key' => $wholesale_role . '_have_wholesale_price',
'value' => 'yes',
'compare' => '='
),
array(
'key' => $wholesale_role . '_wholesale_price',
'value' => 0,
'compare' => '>',
'type' => 'NUMERIC'
)
);
}
$wholesale_query = new WP_Query($args);
if (!$wholesale_query->have_posts()) {
unset($terms[$key]);
}
}
// Reset array keys after removing terms
$terms = array_values($terms);
}
return $terms;
}, 20, 4);
