Visualizza tutti i prodotti per categoria con WooCommerce


13

Con WooCommerce, voglio visualizzare tutte le categorie di un negozio come titoli, con tutti i loro prodotti elencati di seguito in un elenco non ordinato. È possibile farlo? Ho visto alcune cose che mi permetteranno di visualizzare un elenco di categorie o un elenco di prodotti per una categoria specifica, ma nulla che ripercorrerà tutto come ho descritto.

Ecco cosa sto attualmente utilizzando 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>';
    }
}
?> 

Hai semplicemente bisogno di un ciclo di anelli. All'interno del tuo foreach(), esegui un nuovo WP_Query()per afferrare tutti i prodotti in quel termine .. e poi scorrere tra quelli.
Helgatheviking

Penso di aver capito come fare, ma non riesco a trovare nulla sull'elenco dei prodotti per categoria con PHP (tutto quello che posso trovare sono sciocchezze di shortcode). Se puoi mostrarmi come appare quel codice, dovrei essere in grado di capire il resto.
JacobTheDev,

2
Non hai bisogno di uno shortcode, elencare i prodotti per categoria è solo una domanda fiscale .
Helgatheviking

Sapevo che non avevo bisogno di uno shortcode, stavo dicendo che era tutto ciò che riuscivo a trovare, il che non era di aiuto. Quel link che hai fornito sembra promettente, ci proverò domani e riporterò indietro, grazie.
JacobTheDev,

1
Ok. Se sei ancora bloccato, modifica la tua domanda con il tuo nuovo tentativo di codifica e darò un'occhiata.
Helgatheviking

Risposte:


25

Capito! Il codice seguente elenca automaticamente tutte le categorie e i post di ciascuna 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>";
    }
}

Bello. Se vuoi diventare davvero pazzo, potresti voler esaminare l' API Transients ... che ti aiuterebbe a non eseguire così tante query su ogni caricamento della pagina.
Helgatheviking

Come posso ottenere le miniature delle immagini per ogni categoria?
Alyssa Reyes,

Le categorie di @AlyssaReyes non hanno intrinsecamente miniature; hai impostato un campo personalizzato per le tue categorie per questo? Potresti pubblicare questo in una nuova domanda con maggiori dettagli e inviarmi il link in modo che io possa capire meglio?
JacobTheDev

1
Grazie amico, mi hai risparmiato un po 'di tempo e mi hai messo nella giusta direzione. L'unico modo in cui ho potuto migliorare questa risposta è utilizzare la classe di query integrata di WooCommerce: WC_Product_Queryinvece di WP_Queryutilizzare un foreachciclo anziché un whileciclo. Per i motivi, dai un'occhiata alla documentazione di Github per la query: github.com/woocommerce/woocommerce/wiki/… , ma l'essenza è:> "le query WP_Queries personalizzate potrebbero violare il tuo codice nelle future versioni di WooCommerce come dati passa a tabelle personalizzate per prestazioni migliori ".
UncaughtTypeError
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.