1. Casa
  2. Knowledge Base
  3. WooCommerce Wholesale Prices Premium
  4. Visibilità del prodotto
  5. Come nascondere le categorie al dettaglio agli utenti all'ingrosso
  1. Casa
  2. Knowledge Base
  3. WooCommerce Wholesale Prices Premium
  4. Come nascondere le categorie al dettaglio agli utenti all'ingrosso

Come nascondere le categorie al dettaglio agli utenti all'ingrosso

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);
Questo articolo è stato utile?

Articoli Correlati

Serve Supporto?

Non trovi la risposta che cerchi?
Contatta il Supporto
Completa il tuo acquisto