Je n'ai pas trouvé le bon moyen d'obtenir la liste de tous les produits pour un ID de catégorie donné (pas un nom de catégorie).
Le code que j'utilise pour obtenir la liste des catégories est le suivant, cela fonctionne très bien:
$args = array(
'orderby' => $orderby,
'order' => $order,
'hide_empty' => 0,
'include' => $ids,
'parent' => 0,
);
$categories = get_terms( 'product_cat', $args );
Cependant, maintenant pour un ID de catégorie donné (disons 47), je ne pouvais pas trouver le moyen d'obtenir ses produits pertinents. J'ai essayé de la manière suivante:
$args = array(
'posts_per_page' => 5,
'offset'=> 1,
'category' => 47
);
$products = get_posts( $args );
echo var_dump($products);
Le débogage du $products
tableau renvoie toujours 0, ce qui est faux car je sais qu'il y a des produits sous la catégorie avec l'ID 47. Des idées pour réparer mon code?
woocommerce
Malloc
la source
la source
category
ouproduct_category
?Réponses:
Je soupçonne que le principal problème est que vous devriez utiliser l'
WP_Query
objet plutôt queget_posts()
. Le dernier par défaut ne renvoie que les articles avec un post_type depost
produits non,Donc, étant donné une catégorie avec l'ID 26, le code suivant retournerait ses produits (WooCommerce 3+):
Dans les versions antérieures de WooCommerce, la visibilité était stockée sous forme de méta-champ, le code serait donc:
Ici, nous ne retournons que des produits visibles, 12 par page.
Jetez un œil à http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters pour plus de détails sur le fonctionnement du ciblage par catégorie - il est souvent plus utile de le récupérer par slug que par ID!
la source
get_posts()
est fausse. Vous pouvez remplacernew WP_Query($args)
parget_posts($args)
dans votre code et cela fonctionnera.changer la catégorie (nom-catégorie-slug) par id ou nom ou slug
la source
Un peu en retard, mais je voudrais clarifier les choses et apporter une réponse plus claire. L'utilisateur @ benz001 a donné une réponse valide possible, mais a dit quelque chose de mal:
get_posts
renvoie tout type de post-types, par défaut àposts
post-type, tout commeWP_Query
. Les vraies différences entre les deux sont merveilleusement expliquées ICI .Le fait est que l'OP manquait simplement certains paramètres dans le
$args
tableau:La définition du post-type qu'il recherche:
Et la modification de la "partie taxonomie" de la requête de recherche:
De cette façon, vos prochaines lignes
Vous montrera les produits nécessaires :)
Tous les autres paramètres supplémentaires affichés par @ benz001 sont bien sûr valides mais non demandés par l'OP, j'ai donc décidé de les laisser dans cette réponse.
la source
la source