1. Strona główna
  2. Baza wiedzy
  3. WooCommerce Wholesale Prices Premium
  4. Widoczność produktów
  5. Jak ukryć kategorie detaliczne przed użytkownikami hurtowymi
  1. Strona główna
  2. Baza wiedzy
  3. WooCommerce Wholesale Prices Premium
  4. Jak ukryć kategorie detaliczne przed użytkownikami hurtowymi

Jak ukryć kategorie detaliczne przed użytkownikami hurtowymi

Mamy opcję Tylko pokaż produkty hurtowe klientom hurtowym. Jednak ta funkcja nie ukryje kategorii detalicznych wyświetlanych w Twoim sklepie.

Na szczęście istnieje niestandardowy fragment kodu, którego możesz użyć do ukrycia niechcianych kategorii detalicznych przed użytkownikami hurtowymi. Uprzejmie dodaj poniższy fragment do pliku function.php swojego motywu potomnego.

Należy pamiętać, że funkcja Tylko pokaż produkty hurtowe klientom hurtowym musi być włączona, aby fragment kodu działał. Znajduje się ona w WooCommerce > Ustawienia > Ceny hurtowe > Ogólne

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);
Czy ten artykuł był pomocny?

Powiązane artykuły

Potrzebujesz wsparcia?

Nie możesz znaleźć odpowiedzi, której szukasz?
Skontaktuj się z pomocą techniczną
Zakończ Zakup