J'ai une catégorie avec des produits non visibles par tous. J'ai déjà un script en place, qui supprime cette catégorie du widget sidebar, quand aucun élément de la catégorie n'est visible par l'utilisateur.Woocommerce: masquer catégorie dans la boutique
J'ai créé une fonction qui place l'ID d'exclusion term_id dans une variable globale. Maintenant, j'ai besoin de quelque chose qui les exclut de la vue dans la boutique.
$GLOBALS['cat_exclude'] = NULL;
function getExcludedCats() {
//if(! is_admin() && (is_product_category() || is_shop())){
$current_tax = get_query_var('product_cat');
$term =get_term_by('slug', $current_tax, 'product_cat');
$parentid = $term->term_id;
$args = array(
'hide_empty' => true,
'parent' => $parentid
);
$product_categories = get_terms('product_cat', $args);
$exclude = array();
foreach ($product_categories as $category) {
$posts = get_posts(array('post_type' => 'product', 'posts_per_page' => -1, 'product_cat' => $category->slug, 'fields' => 'ids'));
$show_category = false;
foreach ($posts as $post) {
$product = new WC_Product($post);
$visible_product = $product->is_visible();
if (true === $visible_product) {
$show_category = true;
break;
}
}
if (false === $show_category) {
$exclude[] = $category->term_id;
}
}
if (! empty($exclude)) {
$GLOBALS['cat_exclude'] = implode(',', $exclude);
}
//}
}
add_action('wp_head', 'getExcludedCats');
Cependant, dans la vue de magasin, la catégorie est toujours visible. Comment puis-je l'enlever là, quand aucun élément dans cette catégorie n'est visible à l'utilisateur.
J'ai essayé: https://gist.github.com/rynaldos/a9d357b1e3791afd9bea48833ff95994 Mais il supprime TOUJOURS la catégorie, à la fois dans le widget et la boutique.
Les produits sont affichés par les membres du groupe du client: https://wordpress.org/plugins/groups/