web-dev-qa-db-fra.com

Masquer les produits non classés de la page de la boutique

Lors de la mise à jour de la version 3.3 de WooCoomerce, la catégorie de produits "Sans catégorie" a été ajoutée, puis est apparue sur toutes les pages (y compris la page de la boutique WooCommerce) contenant des produits, le cas échéant. Tous les produits qui n'ont pas au moins une catégorie attribuée sont ensuite (logiquement, je suppose) assignés à la catégorie "non catégorisée".

J'ai toujours utilisé l'approche (peut-être pas idéale) de cacher les produits de saison en supprimant toutes les catégories de ces produits lorsqu'ils étaient hors saison. Ce nouveau changement signifie que ces produits "cachés" sont soudainement apparus sur le site en vente dans cette nouvelle catégorie que je ne souhaite sur aucune page.

J'ai effectué des recherches sur le Web à la recherche d'un moyen de masquer la catégorie de produit "Non classé" et constaté que ce problème était généralisé. Un certain nombre de solutions ont été proposées, notamment de transformer la catégorie "non catégorisé" en une sous-catégorie, puis de masquer toutes les sous-catégories ou de masquer des catégories à l'aide de CSS.

Voir https://wordpress.org/support/topic/uncategorized-product-category-still-showing-after-3-3-1/

Cependant, aucune de ces solutions n'est "propre" ou suffisamment robuste.

Mon problème a été de ne montrer que les produits que je veux voir en utilisant le shortcode de catégories de produits (sans l'identifiant de catégorie non catégorisé). Par exemple:

[product_categories ids="11, 19, 18, 14, 7, 8, 9, 10, 15, 98, 16, 17"]

mais cela ne résout pas le problème sur la page de la boutique (qui n'utilise pas de codes courts).

Je me demande si quelqu'un a une méthode robuste pour masquer la catégorie de produits "Sans catégorie", car il s'agit d'un problème d'actualité qui semble être répandu à l'heure actuelle.

1
WPDavid

J'ai résolu ce problème sur la base du code aimablement fourni par rynoldos ( https://Gist.github.com/rynaldos/a9d357b1e3791afd9bea48833ff95994 ) comme suit:

Incluez le code suivant dans votre fichier functions.php:

/** Remove categories from shop and other pages
 * in Woocommerce
 */
function wc_hide_selected_terms( $terms, $taxonomies, $args ) {
    $new_terms = array();
    if ( in_array( 'product_cat', $taxonomies ) && !is_admin() && is_shop() ) {
        foreach ( $terms as $key => $term ) {
              if ( ! in_array( $term->slug, array( 'uncategorized' ) ) ) {
                $new_terms[] = $term;
              }
        }
        $terms = $new_terms;
    }
    return $terms;
}
add_filter( 'get_terms', 'wc_hide_selected_terms', 10, 3 );

Ce code s'applique à la page de la boutique sur WooCommerce. Si vous souhaitez appliquer cela à une page différente, remplacez is_shop () par is_page ('YOUR_PAGE_SLUG').

Moi aussi, j’ai eu du mal à trouver une solution à ce problème, mais le code ci-dessus me convient parfaitement.

1
Clinton

J'ai trouvé un moyen simple de masquer la catégorie non catégorisée dans la page de la boutique: j'ai changé sa catégorie parente "Aucune" par une autre catégorie que j'ai.

J'espère que ça aide :-)

Marianne

1
Marianne