WP_Query: exclure les produits cachés de la liste de produits WooCommerce
-
-
Jenoterais que ce code échouerafinalement defaçon catastrophiqueen raison du réglage de `posts_per_page` sur` -1`.Peu de serveursgéreraient ce code quandil y a 1000messages,jamais 20 000.Multipliez celapar lenombre de visiteurs qui arrivent sur votre siteI would note that this code will eventually fail catastrophically due to the `posts_per_page` being set to `-1`. Few servers would handle this code when there are 1000 posts, nevermind 20,000. Multiply that by however many visitors arrive on your site
- 0
- 2016-12-03
- Tom J Nowell
-
2 réponses
- votes
-
- 2016-06-30
Important: Ce qui suitne fonctionne quepour les versions de WooCommerceinférieures à 3.0.Pour une réponseplus àjour,veuillez consulter l'autre réponse de kalle .
WooCommerceenregistre ces donnéesen tant que
metadata
,vous devrez doncexécuter un Meta Query par rapport aunom_visibility
.Quelque chose comme:'meta_query' => array( array( 'key' => '_visibility', 'value' => 'hidden', 'compare' => '!=', ) )
Celaextrairatous lesmessages qui n'ontpas deméta
_visibility
égale àhidden
.Important: The following only works for WooCommerce versions less than 3.0. For a more up-to-date answer please see the other answer by kalle.
WooCommerce save this data as
metadata
so you'll need to run a Meta Query against the name_visibility
. Something like:'meta_query' => array( array( 'key' => '_visibility', 'value' => 'hidden', 'compare' => '!=', ) )
This will pull all posts that do not have meta
_visibility
equal tohidden
.-
Parfait.C'est ce dontj'avaisbesoin.Pourtous ceux qui recherchent cette réponse,voici la requête complète à ce quiprécède. ` -1,'post_type'=> 'product','orderby'=> 'menu-order','order'=> 'asc','meta_query'=> array ( tableau ( 'key'=> '_visibilité', 'value'=> 'caché', 'compare'=> '!=', ) )); $ wc_query=nouvelle WP_Query ($params); ?> `Perfect. That's what I needed. For anyone who searches for this answer, here is the full query to the above. ` -1, 'post_type' => 'product', 'orderby' => 'menu-order', 'order' => 'asc', 'meta_query' => array( array( 'key' => '_visibility', 'value' => 'hidden', 'compare' => '!=', ) )); $wc_query = new WP_Query($params); ?>`
- 0
- 2016-06-30
- Peter Ingersoll
-
@PeterIngersoll FYI,vouspouvezmarquer cette réponse comme acceptéepourmontrer auxfuturs visiteurs ce qui afonctionnépour vous aussi :) Il y a une coche àgauche de la réponse de Howdy.En savoirplusici: http://wordpress.stackexchange.com/help/someone-answers@PeterIngersoll FYI, you can mark this answer as accepted to show future visitors what worked for you as well :) There's a check mark on the left of Howdy's answer. Read more here: http://wordpress.stackexchange.com/help/someone-answers
- 0
- 2016-07-05
- Tim Malone
-
- 2017-04-06
Àpartir de Woocommerce 3. La visibilitéest changéen taxonomie au lieu demeta .Vous devez donc changer lameta_queryen tax_query. Pourn'afficher que lesproduits visibles,
'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'exclude-from-catalog', 'operator' => 'NOT IN', ), ),
et exemples deproduitsen vedette
'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', ), ),
Termespossibles: "exclure-de-la-recherche","exclure-du-catalogue","en vedette","en rupture de stock".
As of Woocommerce 3. Visibility is changed to taxonomy instead of meta. So you need to change the meta_query to tax_query. To show only visible products,
'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'exclude-from-catalog', 'operator' => 'NOT IN', ), ),
and examples for Featured Products
'tax_query' => array( array( 'taxonomy' => 'product_visibility', 'field' => 'name', 'terms' => 'featured', ), ),
Possible terms: 'exclude-from-search', 'exclude-from-catalog', 'featured', 'outofstock'.
J'espère que cen'estpastrop spécifique à WooCommerce.
J'ai un shortcode astucieux qui affiche une liste detousmesproduits avec des SKU. Cependant,ilinclut également lesproduits quej'aipubliésmais quej'ai défini la visibilité du catalogue sur «masqué».
Jene trouvepas d'argument/paramètrepourexclure lesproduitsmasqués (ouinclure uniquement ceuxmarqués comme Catalogue/Recherche).
Je sais que ça doit être simple; Jene l'aitout simplementpastrouvé. Mercipourtoute aide.
Voici le code: