2014-01-09 6 views
28

Я пытаюсь получить категории продукции из WooCommerce через функцию в моей WordPress темаПолучить категории продуктов WooCommerce от WordPress

function get_me_list_of($atts, $content = null) 
    { 
     $args = array('post_type' => 'product', 'posts_per_page' => 10, 'product_cat' => $atts[0]); 

     $loop = new WP_Query($args); 

     echo '<h1 class="upp">Style '.$atts[0].'</h1>'; 
     echo "<ul class='mylisting'>"; 
     while ($loop->have_posts()) : $loop->the_post(); 
     global $product; 

     echo '<li><a href="'.get_permalink().'">'.get_the_post_thumbnail($loop->post->ID, 'thumbnail').'</a></li>'; 
    echo '<li><a href="'.get_permalink().'">'.$loop->post->post_title.'</a></li>'; 

echo '<li><a href="">'.get_categories().'</a></li>'; 
     endwhile; 

     echo "</ul>"; 

     wp_reset_query(); 


    } 

    ?> 

Приведенный выше код возвращает некоторые продукты, но категории продукта.

Когда я включил echo '<li><a href="">'.get_categories().'</a></li>'; в код выше, он возвращается в виде массива. Как это исправить?

Как изменить это, чтобы получить категории продуктов от WooCommerce?

+2

print_r (массив); , посмотреть, что все идет -> использовать соответствующие данные – codepixlabs

ответ

90
<?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 = 1;  // 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 
); 
$all_categories = get_categories($args); 
foreach ($all_categories as $cat) { 
    if($cat->category_parent == 0) { 
     $category_id = $cat->term_id;  
     echo '<br /><a href="'. get_term_link($cat->slug, 'product_cat') .'">'. $cat->name .'</a>'; 

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

Это будет отображать все категории и подкатегории верхнего уровня под ними иерархически. не используйте внутренний запрос, если хотите просто отобразить категории верхнего уровня. Стиль, как вам нравится.

+0

Работал отлично. Благодарю. – Tester

+0

@ Suman.hassan95: grt дорогой, его рабочий, но один вопрос - можем ли мы также дать ссылку на подкатегорию? – Montiyago

+0

@ Тестер: есть что-то вроде подкатегории подкатегории в woocommerce? – Montiyago

15

Улучшение ответа Suman.hassan95 путем добавления ссылки на подкатегорию. Замените следующий код:

$sub_cats = get_categories($args2); 
    if($sub_cats) { 
     foreach($sub_cats as $sub_category) { 
      echo $sub_category->name ; 
     } 

    } 

с:

$sub_cats = get_categories($args2); 
      if($sub_cats) { 
       foreach($sub_cats as $sub_category) { 
        echo '<br/><a href="'. get_term_link($sub_category->slug, 'product_cat') .'">'. $sub_category->name .'</a>'; 
       } 
      } 

или если вы хотите счетчик для каждой подкатегории, заменить с этим:

$sub_cats = get_categories($args2); 
      if($sub_cats) { 
       foreach($sub_cats as $sub_category) { 
        echo '<br/><a href="'. get_term_link($sub_category->slug, 'product_cat') .'">'. $sub_category->name .'</a>'; 
        echo apply_filters('woocommerce_subcategory_count_html', ' <span class="cat-count">' . $sub_category->count . '</span>', $category); 
       } 
      } 
Смежные вопросы