Visualizzare Tutti i Prodotti per Categoria con WooCommerce
Con WooCommerce, vorrei visualizzare tutte le categorie di un negozio come intestazioni, con tutti i loro prodotti elencati sotto in un elenco non ordinato. È possibile farlo? Ho visto alcuni metodi che permettono di visualizzare un elenco di categorie o un elenco di prodotti per una categoria specifica, ma nulla che cicli attraverso tutto come ho descritto.
Ecco cosa sto attualmente usando per elencare tutte le categorie:
<?php
$args = array(
'number' => $number,
'orderby' => $orderby,
'order' => $order,
'hide_empty' => $hide_empty,
'include' => $ids
);
$product_categories = get_terms( 'product_cat', $args );
$count = count($product_categories);
if ( $count > 0 ){
foreach ( $product_categories as $product_category ) {
echo '<h4><a href="' . get_term_link( $product_category ) . '">' . $product_category->name . '</h4>';
}
}
?>

Risolto! Il codice qui sotto elenca automaticamente tutte le categorie e i post di ogni categoria!
$args = array(
'number' => $number,
'orderby' => 'title',
'order' => 'ASC',
'hide_empty' => $hide_empty,
'include' => $ids
);
$product_categories = get_terms( 'product_cat', $args );
$count = count($product_categories);
if ( $count > 0 ){
foreach ( $product_categories as $product_category ) {
echo '<h4><a href="' . get_term_link( $product_category ) . '">' . $product_category->name . '</a></h4>';
$args = array(
'posts_per_page' => -1,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
// 'terms' => 'white-wines'
'terms' => $product_category->slug
)
),
'post_type' => 'product',
'orderby' => 'title,'
);
$products = new WP_Query( $args );
echo "<ul>";
while ( $products->have_posts() ) {
$products->the_post();
?>
<li>
<a href="<?php the_permalink(); ?>">
<?php the_title(); ?>
</a>
</li>
<?php
}
echo "</ul>";
}
}

Bene. Se vuoi davvero spingerti oltre, potresti dare un'occhiata alla Transients API... ti aiuterebbe a evitare di eseguire così tante query ad ogni caricamento di pagina.

Come posso ottenere le miniature delle immagini per ogni categoria?

@AlyssaReyes le categorie non hanno miniature di default; hai impostato un campo personalizzato per le tue categorie a questo scopo? Potresti pubblicare questa domanda in un nuovo thread con maggiori dettagli e inviarmi il link così posso capire meglio?

Grazie amico, mi hai risparmiato del tempo e mi hai indirizzato nella direzione giusta. L'unico modo in cui potrei migliorare questa risposta è utilizzare la classe di query integrata di WooCommerce: WC_Product_Query
, invece di WP_Query
, quindi usare un ciclo foreach
invece di un ciclo while
. Per i motivi, dai un'occhiata alla documentazione Github per la query: https://github.com/woocommerce/woocommerce/wiki/wc_get_products-and-WC_Product_Query#description, ma in sintesi: > "l'uso di query WP_Query personalizzate potrebbe interrompere il tuo codice nelle versioni future di WooCommerce man mano che i dati si spostano verso tabelle personalizzate per migliorare le prestazioni."
