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);
