Comment masquer un produit dans WooCommerce ou masquer des produits par catégorie ou par rôle
Publié: 2020-02-24Il existe de nombreuses façons de masquer un produit spécifique dans WooCommerce et dans cet article ; nous allons explorer chacune de ces manières de masquer un produit dans WooCommerce. des clients ou des rôles d'utilisateur spécifiques.
Masquer le produit WooCommerce
Si vous souhaitez masquer les produits en rupture de stock, vous devez d'abord envisager d'ajouter l'étiquette de rupture de stock sur le produit au lieu de masquer le produit.
Néanmoins, si vous souhaitez toujours masquer ces produits en rupture de stock ou tout autre produit WooCommerce, je partagerai dans cet article comment vous pouvez masquer des produits par ID, nom ou par catégorie.
Masquer le produit WooCommerce à l'aide des options
WooCommerce est livré par défaut avec une excellente option qui permet aux utilisateurs de contrôler la visibilité d'un produit.
Vous pouvez créer un produit caché dans WooCommerce en contrôlant l'option de visibilité avant de publier l'image. Pour masquer le produit dans WooCommerce en utilisant la visibilité, vous devez suivre les étapes suivantes :
- Connectez-vous au tableau de bord de votre site WordPress
- Cliquez sur le menu des produits comme indiqué sur l'image ci-dessous afin d'accéder au produit que vous souhaitez masquer aux utilisateurs à l'aide d'une option de visibilité.
- Sélectionnez le produit dans la liste de tous les produits que vous souhaitez masquer comme indiqué ci-dessous et cliquez sur l'édition pour accéder à l'écran d'édition du produit :
- Dans l'écran d'édition du produit sur le côté droit sous la métabox de publication ci-dessous, il y a une option nommée 'Visibilité du catalogue' Cliquez sur ce lien et une liste déroulante avec des options apparaîtra et la dernière option est masquée.
Lorsque vous cochez cette option radio et cliquez sur ok puis mettez à jour la publication, le produit sera masqué du catalogue de la boutique. Comme illustré dans ces trois étapes (1,2,3) : - Lorsque vous enregistrez ces options et mettez à jour la publication, la visibilité du produit sera définie sur masquée, comme vous pouvez le voir dans l'interface de la boutique :
- Si vous cochez l'option de visibilité du catalogue dans le backend sur l'écran de modification du produit, vous devriez voir qu'il a été mis à jour en masqué lors de la mise à jour de la publication :
C'est le moyen le plus rapide de masquer un produit WooCommerce du catalogue de la boutique. Il existe d'autres moyens que vous pouvez utiliser, comme l'ajout de code au thème enfant. Laissez-nous explorer plus d'options que vous pouvez utiliser pour masquer le produit dans WooCommerce.
Woocommerce Masquer les produits d'une catégorie spécifique de la page de la boutique
Si vous souhaitez masquer des produits spécifiques de la page de la boutique dans WooCommerce, vous pouvez y parvenir en utilisant un crochet d'action qui cible la requête de la page de la boutique « woocommerce_product_query ».
La fonction de rappel doit utiliser $tax_query pour se limiter aux termes associés au produit que vous souhaitez masquer.
Dans ce cas, la clé de termes dans le tableau $tax_query est équivalente à la catégorie/balise comme je l'ai expliqué dans l'article comment obtenir la catégorie de produit WooCommerce actuelle.
Supposons que nous voulions masquer ce produit de la catégorie "pièces automobiles".
Nous pouvons utiliser l'extrait de code suivant ajouté au fichier functions.php pour masquer le produit de la page de la boutique :
/** * Masquer le produit WooCommerce par catégorie sur la page de la boutique. * * @param $q */ add_action( 'woocommerce_product_query', 'njengah_hide_product_by_category_shop_page' ); function njengah_hide_product_by_category_shop_page( $q ) { $tax_query = (tableau) $q->get( 'tax_query' ); $tax_query[] = tableau( 'taxonomie' => 'product_cat', 'champ' => 'limace', 'terms' => array( 'uncategorised','auto-parts'), // N'affiche pas les produits de la catégorie 'auto parts' sur la page de la boutique. 'opérateur' => 'PAS DANS' ); $q->set( 'tax_query', $tax_query ); }
Ajoutez ce code aux fonctions du thème et vous pourrez remplacer la catégorie "pièces automobiles" par toute autre catégorie pour laquelle vous souhaitez masquer les produits, ce qui masquera efficacement les produits de cette catégorie dans la page de la boutique, comme indiqué ci-dessous :
WooCommerce Masquer les produits sauf si vous êtes connecté
Un autre moyen courant de masquer des produits dans WooCommerce implique la restriction de la visibilité du produit en fonction du statut de l'utilisateur, qu'il soit connecté ou non.
La première étape consiste évidemment à vérifier si l'utilisateur est connecté. J'ai expliqué en détail ici - comment vérifier si l'utilisateur est connecté à WordPress.
Nous allons utiliser ce code pour vérifier l'état de connexion puis le combiner avec la requête pour masquer les produits WooCommerce de manière conditionnelle en fonction de l'état de connexion de l'utilisateur.
Le code devrait être le suivant :
** * Masquer le produit WooCommerce si l'utilisateur n'est pas connecté * * @param $requête */ function njengah_hide_product_if_user_not_logged( $query ) { if ( $query->is_main_query() && is_woocommerce() && !is_user_logged_in() ) { $tax_query = tableau( déployer( 'taxonomie' => 'product_cat', 'champ' => 'limace', 'terms' => array( 'uncategorised','auto-parts'), // N'affiche pas les produits de la catégorie 'auto parts' sur la page de la boutique. 'operator'=> 'NOT IN' // exclure ) ); $query->set('tax_query', $tax_query); } } add_action( 'pre_get_posts', 'njengah_hide_product_if_user_not_logged' );
Comme vous pouvez le voir, nous vérifions conditionnellement si l'utilisateur est connecté à l'aide de la fonction is_user_logged_in() avant de pouvoir poursuivre la requête.
Woocommerce Masquer les produits par rôles d'utilisateur
Vous pouvez également masquer les produits par les rôles d'utilisateur. Vous devez d'abord obtenir l'utilisateur actuellement connecté et son rôle d'utilisateur, comme je l'ai expliqué dans le didacticiel précédent sur la façon d'obtenir le rôle d'utilisateur actuel dans WordPress . Ce code pour obtenir le rôle d'utilisateur est simplement le suivant :
$user = wp_get_current_user(); // obtenir et définir l'utilisateur actuel $roles = ( array ) $user->roles; // obtention du rôle $roles[0] //rôle d'utilisateur actuel
Nous devrions combiner ce code avec l'action pre_get_posts précédente et le code qui masquera le produit pour tous les utilisateurs sauf l'administrateur est le suivant :
/** * Masquer le produit WooCommerce par le rôle de l'utilisateur comme dans ce cas, seul l'administrateur peut voir ce produit * * @param $requête */ function njengah_hide_product_by_user_role( $query ) { $user = wp_get_current_user(); // obtenir et définir l'utilisateur actuel $roles = ( array ) $user->roles; // obtention du rôle if ( $query->is_main_query() && is_woocommerce() && $roles[0] != 'administrateur' ) { $tax_query = tableau( déployer( 'taxonomie' => 'product_cat', 'champ' => 'limace', 'terms' => array( 'uncategorised','auto-parts'), // N'affiche pas les produits de la catégorie 'auto parts' sur la page de la boutique. 'operator'=> 'NOT IN' // exclure ) ); $query->set('tax_query', $tax_query); } } add_action( 'pre_get_posts', 'njengah_hide_product_by_user_role' );
Comme vous pouvez le voir dans cette ligne de code où nous vérifions conditionnellement la requête, j'ai introduit la condition pour vérifier si le rôle de l'utilisateur n'est pas admin – $roles[0] != 'administrator' puis nous procédons à la requête. C'est ainsi que vous masquez les produits WooCommerce en fonction du rôle de l'utilisateur.
Vous pouvez exposer cet exemple pour répondre à vos besoins spécifiques et vous pouvez également combiner tous ces cas pour créer un moyen conditionnel de masquer les produits WooCommerce.
Dernières pensées
Dans cet article, nous avons mis en évidence les trois manières courantes de masquer les produits WooCommerce, notamment le masquage par rôle d'utilisateur, le masquage des produits à moins que l'utilisateur ne soit connecté et le masquage des produits WooCommerce sans l'une de ces conditions. Nous avons également décrit le moyen le plus simple de masquer les produits WooCommerce à l'aide de l'option de visibilité du catalogue fournie dans l'écran d'édition du produit. J'espère que vous pourrez désormais facilement mettre en œuvre l'une ou l'autre de ces solutions pour masquer les produits WooCommerce de votre boutique.