繁体   English   中英

如何按类别woocommerce查询产品

[英]How to query products by their categories woocommerce

我正在Woocommerce建立快速订单/订单表

我想要的是这样的

Main category one
 Subcategory
        product
        product
 Subcategory
        product
        product

Main category two
 Subcategory
        product
        product
 Subcategory
        product
        product

我的问题是如何在正确的类别下查询产品

这就是我到目前为止所拥有的

<?php

        $custom = array(

                  'post_type' => 'product', 
                  'posts_per_page' => 100,

        ); 

        $cust_query = new WP_Query( $custom );

        if ( $cust_query->have_posts() ) :
            while( $cust_query->have_posts() ) : $cust_query->the_post(); 

            $cat = get_the_terms( get_the_ID(), 'product_cat' ); 


            ?>

        <a href="#" class="link"><?php echo $cat[0]->name; ?></a>
        <div><?php the_title();?></div>



    <?php   endwhile; 
        endif;  

这是一次查询每个类别我希望所有具有相同类别的产品都在正确的类别下,类别仅打印一次

尝试使用以下代码。 在这里,我假设您只有一个级别类别。

Main category one //level 0 
 Subcategory //level 1
    product
    product
Subcategory
    product
    product

Main category two //level 0 
Subcategory //level 1
    product
    product
Subcategory
    product
    product


<ul class="category-sidebar">   
<?php 
    $get_parent_cats = array(
        'parent' => '0', //get top level categories only
        'taxonomy'=>'product_cat',
        'hide_empty' => false
    ); 

    $all_categories = get_categories( $get_parent_cats );//get parent categories 
    foreach( $all_categories as $single_category ){
        //for each category, get the ID
        $catID = $single_category->cat_ID;

        echo '<li><a href=" ' . get_category_link( $catID ) . ' ">' . $single_category->name . '</a>'; //category name & link
        $get_children_cats = array(
            'child_of' => $catID, //get children of this parent using the catID variable from earlier
            'taxonomy'=>'product_cat',
            'hide_empty' => false
        );
        wp_reset_postdata();
        $child_cats = get_categories( $get_children_cats );//get children of parent category
        if(count($child_cats)>0){

            echo '<ul class="children">';
                foreach( $child_cats as $child_cat ){
                    //for each child category, get the ID
                    $childID = $child_cat->cat_ID;

                    //for each child category, give us the link and name
                    echo '<a href=" ' . get_category_link( $childID ) . ' ">' . $child_cat->name . '</a>';
                    wp_reset_postdata();
                    $args = array(
                                    'post_type' => 'product',
                                    'posts_per_page' => -1,
                                    'tax_query' => array(
                                                        array(
                                                        'taxonomy' => 'product_cat',
                                                        'field' => 'id',
                                                        'terms' => $childID,
                                                        ),
                                                    ),
                                );

                    $loop = new WP_Query($args);
                    echo "<ul>";
                    if($loop->have_posts()) {
                        while ( $loop->have_posts() ) {
                        $loop->the_post();
                        // do something
                        echo "<li><a href=".get_the_permalink()."> Product Name : ".get_the_title()."</a></li>";
                        }
                    }
                    echo "</ul>";
                }
            echo '</ul></li>';
        }else{
            //$catID
            wp_reset_postdata();
            $args = array(
                'post_type' => 'product',
                'posts_per_page' => -1,
            'tax_query' => array(
                array(
                    'taxonomy' => 'product_cat',
                    'field' => 'id',
                    'terms' => $catID,
                ),
            ),
         );

         $loop = new WP_Query($args);
        echo "<ul>";
        if($loop->have_posts()) {
            while ( $loop->have_posts() ) {
            $loop->the_post();
            // do something
            echo "<li><a href=".get_the_permalink()."> Product Name : ".get_the_title()."</a></li>";
            }
        }
        echo "</ul>";
        }
    } //end of categories logic ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM