Afișează Toate Produsele pe Categorii cu WooCommerce

25 mar. 2014, 22:40:32
Vizualizări: 96.4K
Voturi: 14

Cu WooCommerce, doresc să afișez toate categoriile dintr-un magazin ca titluri, cu toate produsele lor listate mai jos într-o listă neordonată. Este posibil să fac asta? Am văzut câteva soluții care permit afișarea unei liste de categorii sau a unei liste de produse pentru o anumită categorie, dar nimic care să parcurgă tot conținutul așa cum am descris.

Iată ce folosesc în prezent pentru a lista toate categoriile:

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

Ai nevoie doar de o buclă de bucle. În interiorul foreach()-ului tău, rulează un nou WP_Query() pentru a prelua toate produsele din acel termen... apoi parcurge-le pe acelea.

helgatheviking helgatheviking
25 mar. 2014 23:09:44

Cred că înțeleg cum să fac asta, dar nu găsesc nimic despre listarea produselor pe categorii cu PHP (tot ce găsesc sunt prostii cu shortcode-uri). Dacă poți să-mi arăți cum arată acel cod, ar trebui să mă descurc cu restul.

JacobTheDev JacobTheDev
25 mar. 2014 23:23:11

Nu ai nevoie de un shortcode, listarea produselor pe categorii este doar o Interogare Taxonomie.

helgatheviking helgatheviking
25 mar. 2014 23:29:26

Știam că nu am nevoie de un shortcode, doar spuneam că asta e tot ce am găsit, ceea ce nu a fost de ajutor. Linkul pe care l-ai trimis pare promițător, o să încerc mâine și revin cu feedback, mulțumesc.

JacobTheDev JacobTheDev
26 mar. 2014 00:04:23

Bine. Dacă tot ești blocat, editează întrebarea ta cu noul tău cod și o să arunc o privire.

helgatheviking helgatheviking
26 mar. 2014 01:02:39
Toate răspunsurile la întrebare 1
4
26

Am rezolvat! Codul de mai jos listează automat toate categoriile și postările din fiecare categorie!

$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
Comentarii

Fain. Dacă vrei să mergi cu adevărat la extrem, ai putea să te uiți la Transients API... asta te-ar ajuta să nu mai rulezi atâtea interogări la fiecare încărcare de pagină.

helgatheviking helgatheviking
26 mar. 2014 19:16:36

Cum pot obține thumbnail-urile imaginilor pentru fiecare categorie?

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

@AlyssaReyes categoriile nu au în mod implicit thumbnail-uri; ai configurat un câmp personalizat pentru categoriile tale în acest scop? Poți posta această întrebare într-un thread nou cu mai multe detalii și să îmi trimiți link-ul ca să înțeleg mai bine?

JacobTheDev JacobTheDev
7 mar. 2016 16:28:47

Mulțumesc frumos, mi-ai economisit timp și m-ai îndreptat în direcția corectă. Singurul mod în care aș putea îmbunătăți acest răspuns este să folosesc clasa de interogare integrată a WooCommerce: WC_Product_Query, în loc de WP_Query, apoi să folosesc o buclă foreach în loc de o buclă while. Pentru motivele din spatele acestei recomandări, poți consulta documentația de pe Github pentru interogare: https://github.com/woocommerce/woocommerce/wiki/wc_get_products-and-WC_Product_Query#description, dar esența este: > "utilizarea interogărilor personalizate WP_Queries este probabil să-ți strice codul în versiunile viitoare ale WooCommerce, deoarece datele se migrează către tabele personalizate pentru o performanță mai bună."

UncaughtTypeError UncaughtTypeError
5 iul. 2019 16:07:39