Tampilkan Semua Produk berdasarkan Kategori dengan WooCommerce


13

Dengan WooCommerce, saya ingin menampilkan semua kategori di toko sebagai judul, dengan semua produk mereka tercantum di bawah ini dalam daftar yang tidak diurutkan. Apakah ini mungkin dilakukan? Saya telah melihat beberapa hal yang akan memungkinkan saya menampilkan daftar kategori atau daftar produk untuk kategori tertentu, tetapi tidak ada yang akan mengulangi semua cara seperti yang saya jelaskan.

Inilah yang saya gunakan saat ini untuk mendaftar semua kategori:

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

Anda hanya perlu satu loop loop. Di dalam Anda foreach(), jalankan yang baru WP_Query()untuk mengambil semua produk dalam istilah itu .. dan kemudian loop melalui itu.
Helgatheviking

Saya rasa saya mengerti bagaimana melakukan ini, tetapi saya tidak dapat menemukan apa pun tentang daftar produk berdasarkan kategori dengan PHP (yang bisa saya temukan hanyalah shortcode nonsense). Jika Anda bisa menunjukkan kepada saya seperti apa kode itu, saya seharusnya bisa mengetahui sisanya.
JacobTheDev

2
Anda tidak memerlukan kode pendek, daftar produk berdasarkan kategori hanyalah Permintaan Pajak .
Helgatheviking

Saya tahu saya tidak memerlukan kode pendek, saya katakan itu yang bisa saya temukan, yang tidak membantu. Tautan yang Anda berikan terlihat menjanjikan, saya akan mencobanya besok dan melaporkan kembali, terima kasih.
JacobTheDev

1
Baik. Jika Anda masih buntu, edit pertanyaan Anda dengan upaya pengkodean baru Anda dan saya akan memeriksanya.
Helgatheviking

Jawaban:


25

Menemukannya! Kode di bawah ini secara otomatis mencantumkan semua kategori dan setiap posting kategori!

$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>";
    }
}

Bagus. Jika Anda ingin menjadi benar-benar gila, Anda mungkin ingin melihat ke dalam API Transients ... yang akan membantu Anda menjalankan begitu banyak pertanyaan pada setiap pemuatan halaman.
Helgatheviking

Bagaimana saya bisa mendapatkan gambar mini gambar untuk setiap kategori?
Alyssa Reyes

@AlyssaReyes kategori tidak memiliki thumbnail pada dasarnya; apakah Anda menyiapkan bidang khusus untuk kategori Anda untuk ini? Bisakah Anda memposting ini dalam pertanyaan baru dengan lebih detail dan mengirimkan saya tautan sehingga saya bisa lebih mengerti?
JacobTheDev

1
Terima kasih kawan, Anda menghemat waktu dan menempatkan saya di arah yang benar. Satu-satunya cara saya dapat meningkatkan jawaban ini adalah dengan menggunakan kelas kueri bawaan WooCommerce:, WC_Product_Queryalih-alih WP_Query, lalu gunakan satu foreachlingkaran sebagai ganti satu whilelingkaran. Untuk alasan mengapa, lihat dokumentasi Github untuk kueri: github.com/woocommerce/woocommerce/wiki/… , tetapi intinya adalah:> "kueri WP_Queries khusus kemungkinan akan memecah kode Anda di versi WooCommerce di masa mendatang sebagai data bergerak menuju tabel khusus untuk kinerja yang lebih baik. "
UncaughtTypeError
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.