Abbiamo un'opzione per Mostra solo prodotti all'ingrosso ai clienti all'ingrosso. Tuttavia, questa funzionalità non nasconderà le categorie al dettaglio visualizzate nel tuo negozio.
Fortunatamente, esiste uno snippet personalizzato che puoi utilizzare per nascondere le categorie al dettaglio indesiderate ai tuoi utenti all'ingrosso. Aggiungi cortesemente il seguente snippet al file function.php del tuo child theme.
Tieni presente che la funzionalità Mostra solo prodotti all'ingrosso ai clienti all'ingrosso deve essere abilitata affinché lo snippet funzioni, e si trova in Woocommerce > Impostazioni > Prezzi all'ingrosso > Generale
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);
