2014-01-09 309 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