2014-01-09 264 views
20

我用下面的代码来获取产品类别列表形成woocommerce在我的wordpress网站:Woocommerce获得产品

<?php 
    $taxonomy  = 'product_cat'; 
    $orderby  = 'name'; 
    $show_count = 0;  // 1 for yes, 0 for no 
    $pad_counts = 0;  // 1 for yes, 0 for no 
    $hierarchical = 0;  // 1 for yes, 0 for no 
    $title  = ''; 
    $empty  = 0; 
$args = array(
    'taxonomy'  => $taxonomy, 
    'orderby'  => $orderby, 
    'show_count' => $show_count, 
    'pad_counts' => $pad_counts, 
    'hierarchical' => $hierarchical, 
    'title_li'  => $title, 
    'hide_empty' => $empty 
); 
?> 
<?php $all_categories = get_categories($args); 

//print_r($all_categories); 
foreach ($all_categories as $cat) { 
    //print_r($cat); 
    if($cat->category_parent == 0) { 
     $category_id = $cat->term_id; 

?>  

<?php  

     echo '<br /><a href="'. get_term_link($cat->slug, 'product_cat') .'">'. $cat->name .'</a>'; ?> 


     <?php 
     $args2 = array(
      'taxonomy'  => $taxonomy, 
      'child_of'  => 0, 
      'parent'  => $category_id, 
      'orderby'  => $orderby, 
      'show_count' => $show_count, 
      'pad_counts' => $pad_counts, 
      'hierarchical' => $hierarchical, 
      'title_li'  => $title, 
      'hide_empty' => $empty 
     ); 
     $sub_cats = get_categories($args2); 
     if($sub_cats) { 
      foreach($sub_cats as $sub_category) { 
       echo $sub_category->name ; 
      } 

     } ?> 



    <?php }  
} 
?> 

这工作正常,返回的产品类别列表。我一直在努力获得特定类别的产品清单。

示例:使用cat_id = 34获取所有产品。

我知道产品存储为帖子,并一直试图做到这一点,但似乎无法完成。

如何获取特定类别的产品列表?

回答

39
<?php 
    $args = array(
     'post_type'  => 'product', 
     'posts_per_page' => 10, 
     'product_cat' => 'hoodies' 
    ); 

    $loop = new WP_Query($args); 

    while ($loop->have_posts()) : $loop->the_post(); 
     global $product; 
     echo '<br /><a href="'.get_permalink().'">' . woocommerce_get_product_thumbnail().' '.get_the_title().'</a>'; 
    endwhile; 

    wp_reset_query(); 
?> 

这将列出所有产品缩略图和名称以及它们与产品页面的链接。根据您的要求更改类别名称和posts_per_page。

+2

如果您想在代码的嵌套内部循环中使用它,请使用'product_cat'=> $ sub_category-> slug。 –

+2

你那里的一些人只是天才。应该有一种奖励非常有用的评论/人:) – Shina

+0

我想使用'get_posts(arg)'。我如何做到这一点? – huykon225

19
<?php 
$args  = array('post_type' => 'product', 'category' => 34); 
$products = get_posts($args); 
?> 

这应该抓住所有你想要的产品,虽然我不记得woo-commerce使用什么类型的帖子,但我可能有帖子类型错误。它将返回一系列产品

+0

这就像一个魅力 –

+0

我试过你的片段,但它只返回5个产品,虽然我试过'post_per_page = -1'。你能告诉我为什么吗 ? – huykon225

+0

@ huykon225正确的参数是'posts_per_page',而不是'post_per_page'。 – DNACode