Hiển thị tất cả các sản phẩm theo danh mục với WooC Commerce


13

Với WooC Commerce, tôi muốn hiển thị tất cả các danh mục trong một cửa hàng dưới dạng tiêu đề, với tất cả các sản phẩm của chúng được liệt kê bên dưới trong một danh sách không có thứ tự. Đây có phải là có thể làm gì? Tôi đã thấy một vài điều sẽ cho phép tôi hiển thị danh sách các danh mục hoặc danh sách các sản phẩm cho một danh mục cụ thể, nhưng không có gì sẽ lặp lại mọi thứ theo cách tôi mô tả.

Đây là những gì tôi hiện đang sử dụng để liệt kê tất cả các danh mục:

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

Bạn chỉ cần một vòng lặp. Trong của bạn foreach(), chạy một cái mới WP_Query()để lấy tất cả các sản phẩm trong thuật ngữ đó .. và sau đó lặp qua những sản phẩm đó.
xe đạp

Tôi nghĩ rằng tôi hiểu làm thế nào để làm điều này, nhưng tôi không thể tìm thấy bất cứ điều gì về việc liệt kê các sản phẩm theo danh mục với PHP (tất cả những gì tôi có thể tìm thấy là shortcode vô nghĩa). Nếu bạn có thể chỉ cho tôi mã đó trông như thế nào, tôi sẽ có thể tìm ra phần còn lại.
JacobTheDev

2
Bạn không cần một mã ngắn, liệt kê các sản phẩm theo danh mục chỉ là Truy vấn Thuế .
đạp xe vào

Tôi biết tôi không cần một shortcode, tôi đã nói rằng đó là tất cả những gì tôi có thể tìm thấy, điều đó không có ích. Liên kết mà bạn cung cấp có vẻ đầy hứa hẹn, tôi sẽ cung cấp cho nó một shot vào ngày mai và báo cáo lại, cảm ơn.
JacobTheDev

1
Đồng ý. Nếu bạn vẫn bị mắc kẹt, hãy chỉnh sửa câu hỏi của bạn với nỗ lực mã hóa mới và tôi sẽ xem xét.
xe đạp vào

Câu trả lời:


25

Tìm ra! Mã dưới đây tự động liệt kê tất cả các danh mục và từng danh mục bài viết!

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

Đẹp. Nếu bạn muốn trở nên thực sự điên rồ, bạn có thể muốn xem xét API khách hàng ... điều đó sẽ giúp bạn không chạy quá nhiều truy vấn trên mỗi lần tải trang.
xe đạp vào

Làm thế nào tôi có thể có được hình thu nhỏ hình ảnh cho mỗi thể loại?
Alyssa Reyes

Các danh mục @AlyssaReyes vốn không có hình thu nhỏ; bạn đã thiết lập một trường tùy chỉnh cho các danh mục của bạn cho điều này? Bạn có thể đăng câu hỏi này trong một câu hỏi mới với nhiều chi tiết hơn và gửi cho tôi liên kết để tôi có thể hiểu rõ hơn?
JacobTheDev

1
Cảm ơn người đàn ông, bạn đã tiết kiệm cho tôi một thời gian và đặt tôi đi đúng hướng. Cách duy nhất tôi có thể cải thiện câu trả lời này là sử dụng lớp truy vấn tích hợp của WooC Commerce : WC_Product_Query, thay vì WP_Query, sau đó sử dụng foreachvòng lặp thay vì whilevòng lặp. Để biết lý do tại sao, hãy xem tài liệu Github cho truy vấn: github.com/wooc Commerce / wococ Commerce / wiki /, nhưng ý chính là:> "truy vấn WP_Queries tùy chỉnh có thể phá vỡ mã của bạn trong các phiên bản tương lai của WooC Commerce dưới dạng dữ liệu di chuyển về phía các bảng tùy chỉnh để có hiệu suất tốt hơn. "
UncaughtTypeError
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.