Visualizzare Tutti i Prodotti per Categoria con WooCommerce

25 mar 2014, 22:40:32
Visualizzazioni: 96.4K
Voti: 14

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>';
    }
}
?>
5
Commenti

Hai semplicemente bisogno di un ciclo di cicli. All'interno del tuo foreach(), esegui un nuovo WP_Query() per ottenere tutti i prodotti in quel termine.. e poi scorri attraverso quelli.

helgatheviking helgatheviking
25 mar 2014 23:09:44

Credo di capire come fare questo, ma non riesco a trovare nulla riguardo all'elenco dei prodotti per categoria con PHP (tutto quello che trovo sono sciocchezze sugli shortcode). Se puoi mostrarmi come appare quel codice, dovrei essere in grado di capire il resto.

JacobTheDev JacobTheDev
25 mar 2014 23:23:11

Non hai bisogno di uno shortcode, elencare i prodotti per categoria è semplicemente una Tax Query.

helgatheviking helgatheviking
25 mar 2014 23:29:26

Sapevo di non aver bisogno di uno shortcode, stavo solo dicendo che era l'unica cosa che riuscivo a trovare, il che non era d'aiuto. Il link che hai fornito sembra promettente, lo proverò domani e ti farò sapere, grazie.

JacobTheDev JacobTheDev
26 mar 2014 00:04:23

Ok. Se sei ancora bloccato, modifica la tua domanda con il nuovo tentativo di codice e ci darò un'occhiata.

helgatheviking helgatheviking
26 mar 2014 01:02:39
Tutte le risposte alla domanda 1
4
26

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>";
    }
}
26 mar 2014 18:28:48
Commenti

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.

helgatheviking helgatheviking
26 mar 2014 19:16:36

Come posso ottenere le miniature delle immagini per ogni categoria?

Alyssa Reyes Alyssa Reyes
6 mar 2016 07:57:48

@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?

JacobTheDev JacobTheDev
7 mar 2016 16:28:47

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."

UncaughtTypeError UncaughtTypeError
5 lug 2019 16:07:39