Wyświetl wszystkie produkty według kategorii za pomocą WooCommerce

13

Dzięki WooCommerce chcę wyświetlać wszystkie kategorie w sklepie jako nagłówki, a wszystkie ich produkty są wymienione poniżej na nieuporządkowanej liście. Czy to się da zrobić? Widziałem kilka rzeczy, które pozwolą mi wyświetlić listę kategorii lub listę produktów dla określonej kategorii, ale nic, co przejdzie przez wszystko tak, jak opisałem.

Oto, czego aktualnie używam, aby wyświetlić listę wszystkich kategorii:

<?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>';
    }
}
?> 
JacobTheDev
źródło
Potrzebujesz po prostu pętli. Uruchom swój foreach()nowy, WP_Query()aby złapać wszystkie produkty w tym terminie ... a następnie przejrzeć je.
helgatheviking
Myślę, że rozumiem, jak to zrobić, ale nie mogę znaleźć niczego na temat wyświetlania produktów według kategorii za pomocą PHP (wszystko, co mogę znaleźć, to bzdury o krótkim kodzie). Jeśli potrafisz pokazać mi, jak wygląda ten kod, powinienem być w stanie dowiedzieć się, co reszta.
JacobTheDev,
2
Nie potrzebujesz krótkiego kodu, lista produktów według kategorii to tylko zapytanie podatkowe .
helgatheviking
Wiedziałem, że nie potrzebuję krótkiego kodu, mówiłem, że to wszystko, co mogłem znaleźć, co było nieprzydatne. Ten link, który podałeś, wygląda obiecująco, dam ci szansę jutro i zdam relację, dzięki.
JacobTheDev,
1
Dobrze. Jeśli nadal utkniesz, edytuj swoje pytanie za pomocą nowej próby kodowania, a ja przyjrzę się.
helgatheviking

Odpowiedzi:

25

Domyśliłam się! Poniższy kod automatycznie wyświetla wszystkie kategorie i posty każdej kategorii!

$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>";
    }
}
JacobTheDev
źródło
Ładny. Jeśli chcesz naprawdę zwariować, możesz zajrzeć do interfejsu API Transjentów ..., który pomógłby Ci uniknąć uruchamiania tak wielu zapytań przy każdym ładowaniu strony.
helgatheviking
Jak mogę uzyskać miniatury obrazów dla każdej kategorii?
Alyssa Reyes
Kategorie @AlyssaReyes z natury nie mają miniatur; czy skonfigurowałeś do tego niestandardowe pole dla swoich kategorii? Czy możesz zamieścić to w nowym pytaniu z bardziej szczegółowymi informacjami i wysłać mi link, aby lepiej zrozumieć?
JacobTheDev,
1
Dzięki człowieku, zaoszczędziłeś mi trochę czasu i skierowałeś mnie w dobrym kierunku. Jedynym sposobem, w jaki mógłbym poprawić tę odpowiedź, jest użycie wbudowanej klasy zapytań WooCommerce: WC_Product_Queryzamiast WP_Querytego użyj foreachpętli zamiast whilepętli. Z powodów, dla których warto zapoznać się z dokumentacją Github dla zapytania: github.com/woocommerce/woocommerce/wiki/… , ale sedno jest następujące:> „niestandardowe zapytania WP_Queries mogą uszkodzić kod w przyszłych wersjach WooCommerce jako dane przesuwa się w kierunku tabel niestandardowych dla lepszej wydajności.
UncaughtTypeError