1. Accueil
  2. Base de connaissances
  3. WooCommerce Wholesale Prices Premium
  4. Visibilité des produits
  5. Comment masquer les catégories de détail aux utilisateurs de gros
  1. Accueil
  2. Base de connaissances
  3. WooCommerce Wholesale Prices Premium
  4. Comment masquer les catégories de détail aux utilisateurs de gros

Comment masquer les catégories de détail aux utilisateurs de gros

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);
Cet article vous a-t-il été utile ?

Articles liés

Besoin de support ?

Vous ne trouvez pas la réponse que vous cherchez ?
Contacter le support
Finalisez votre achat