web-dev-qa-db-fra.com

Masquer les produits «en rupture de stock» dans Woocommerce

Sous "Produits" et "Inventaire", j'ai vérifié le paramètre suivant: "Masquer les articles en rupture de stock du catalogue"

Maintenant, tous les produits épuisés sont cachés dans la vue archive/catégorie. Jusqu'ici tout va bien.

Le problème est que les produits cachés (en rupture de stock) sont comptés par page. Donc, s'il y a 3 produits qui sont épuisés sur la première page, seuls ceux en stock sont affichés (6).

Il semble également que ces produits "cachés" soient également consultables et visibles à travers les différents widgets.

Une idée de comment réparer ça? Je veux vraiment cacher les produits en rupture de stock. Ou dois-je les supprimer manuellement?

15
janlindso

Note à soi-même: Toujours lire le journal des modifications du développeur.

Trouvé la réponse ici: http://develop.woothemes.com/woocommerce/2014/02/solving-common-issues-after-updating-to-woocommerce-2-1/#category-counts-incorrect

Dans le cas où le nombre de produits pour les catégories affiche un nombre trop élevé ou trop faible, après la mise à jour vers WooCommerce 2.1, il existe une solution de contournement facile.

Accédez à l'onglet "Outils" à l'intérieur de WooCommerce> État du système de votre panneau d'administration WordPress. Ici, vous utilisez d'abord le bouton "Recompter les termes", puis le bouton "Effacer les transitoires". forcera le système à recompter tous les produits lors du prochain chargement d'une catégorie.

Mise à jour: Souvenez-vous également qu'il ne suffit pas de changer la quantité de stock à 0. Vous devez également définir "État du stock" sur "Rupture de stock". Sinon le produit sera compté dans la boutique, même s'il n'y a pas de produits en stock.

8
janlindso

Vous pouvez essayer d'ajouter ceci au fichier functions.php de votre thème:

add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) {

if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {


$q->set( 'meta_query', array(array(
    'key'       => '_stock_status',
    'value'     => 'outofstock',
    'compare'   => 'NOT IN'
)));

}

remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}

J'ai modifié le code à partir de cette URL: http://www.wptaskforce.com/how-to-exclude-one-or-more-category-in-woocommerce-shop-page/

Enregistré ici à nouveau au cas où ce site se déconnecterait: (ce code exclut certaines catégories de produits)

add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) {

if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {

$q->set( 'tax_query', array(array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'PUT YOUR CATEGORY HERE' ), // Don't display products in the membership category on the shop page . For multiple category , separate it with comma.
'operator' => 'NOT IN'
)));

}



remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}
12
patrickzdb

J'ai trouvé un moyen plus simple, si quelqu'un cherche toujours à se cacher des produits en rupture de stock dans woocommerce, suivez ces étapes faciles sans modifier le code html!

  1. Accédez à WooCommerce -> Paramètres
  2. Accéder à l'inventaire
  3. Il y a une case à cocher qui dit quelque chose sur notre problème, mais il va en anglais :-) vous trouverez ce dont vous avez besoin
  4. Sauver
5
klaudia

cela ne fonctionnera que si vous utilisez les shortcodes officiels de woocommerce, mais si vous créez une page avec visual composer et en utilisant des plugins personnalisés ou des plugins ou shortcodes tiers, la première étape consiste à pour la requête qui s'exécutent à partir de la boucle, puis vous le modifiez à quelque chose comme ça

$params = array(
        'posts_per_page' => 5,
        'post_type' => array('product', 'product_variation'),
        'meta_query' => array(
            array(
                'key' => '_stock_status',
                'value' => 'instock'
            )
        )
);

la partie la plus importante dont vous devez être sûr est

    'meta_query' => array(
        array(
            'key' => '_stock_status',
            'value' => 'instock'
        )
    )
4
albaiti

Étapes pour masquer les produits en rupture de stock

  1. Allez dans WooCommerce -> sous-menu Paramètres dans le tableau de bord WordPress
  2. Cliquez sur l'onglet Produits> Sous-onglet Inventaire
  3. Cochez l'option Visibilité en rupture de stock qui masque les produits en rupture de stock

enter image description here

0
NJENGAH