2016-06-04 7 views
1

Я пытаюсь показать дочернюю категорию продукта woocommerce для соответствующей родительской категории. Я вошел продукт следующим образом, Product Category details that I enteredКатегория продукта продукта Woocommerce из текущей родительской категории

Я использую следующий фрагмент кода, который отображает список категорий родительских,

<?php 
$IDbyNAME = get_term_by('name', $parent_cat_NAME, 'product_cat'); 

$product_cat_ID = $IDbyNAME->term_id; 

    $args = array(
     'hierarchical' => 1, 
     'show_option_none' => '', 
     'hide_empty' => 0, 
     'parent' => $product_cat_ID, 
     'taxonomy' => 'product_cat' 
    ); 

    $categories = get_categories($args); 

    foreach ($categories as $category) { 
     echo $category->name; 
    } 
?> 

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

Album 
     English Songs 
     Modern Songs 
      Pop 
      Rock 

Как я могу это сделать. Пожалуйста, помогите мне решить эту проблему. Спасибо за продвинутый.

ответ

2

У меня есть решение этой проблемы, чтобы показать категорию, подкатегорию и продукт в WooCommerce WordPress заключается в следующем,

<?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 
); 
?> 

<?php 
$all_categories = get_categories($args); 
foreach ($all_categories as $cat) 
{ 

if($cat->category_parent == 0) 
{ 
$category_id = $cat->term_id; 
$thumbnail_id = get_woocommerce_term_meta($cat->term_id, 'thumbnail_id', true); 
$image = wp_get_attachment_url($thumbnail_id); 
echo "<ul class='category'><li>".$cat->name; 
$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 "<ul class='subcategory'>"; 
if($sub_cats->$sub_category == 0) 
{ 
echo "<li>".$sub_category->cat_name; 

?> 
<?php 
/*echo "<pre>"; 
print_r($sub_category); 
echo "</pre>";*/ 

$args = array('post_type' => 'product','product_cat' => $sub_category->slug); 
$loop = new WP_Query($args); 
echo "<ul class='products'>"; 
while ($loop->have_posts()) : $loop->the_post(); global $product; ?> <li> 
<a href="<?php echo get_permalink($loop->post->ID) ?>" title="<?php echo esc_attr($loop->post->post_title ? $loop->post->post_title : $loop->post->ID); ?>"> 
<?php the_title(); ?> 
</a></li> 
<?php endwhile; ?> 
</ul> 
<?php wp_reset_query(); ?> 

<?php 
} 
else 
{ 
echo "</li></ul></li>"; 
} 
echo "</ul>"; 
} 
} 
else 
{ 
$args = array('post_type' => 'product', 'product_cat' => $cat->slug); 
$loop = new WP_Query($args); 
echo "<ul class='products'>"; 
while ($loop->have_posts()) : $loop->the_post(); global $product; ?> <li> 
<a href="<?php echo get_permalink($loop->post->ID) ?>" title="<?php echo esc_attr($loop->post->post_title ? $loop->post->post_title : $loop->post->ID); ?>"> 
<?php the_title(); ?> 
</a></li> 
<?php endwhile; ?> 
</ul></li></ul> 
<?php wp_reset_query(); 
} 
} 
else 
{ 
echo "</li></ul>"; 
} 
} 
?> 
0

Прежде всего создать массив всех элементов

$all = array(
     0 =>array(
       "id"=> 1, 
       "name"=> "A", 
       "parent_id"=> 0 
      ), 
     1 =>array(
       "id"=> 2, 
       "name"=> "B", 
       "parent_id"=> 1 
      ), 
     2 =>array(
       "id"=> 3, 
       "name"=> "C", 
       "parent_id"=> 1 
      ), 
     3 =>array(
       "id"=> 4, 
       "name"=> "D", 
       "parent_id"=> 2 
      ), 
     4 =>array(
       "id"=> 5, 
       "name"=> "E", 
       "parent_id"=> 0 
      ), 
    );  

Используйте эту функцию, чтобы сделать рекурсивный п раз массив из ваших пунктов

function makeMenu($items, $parentId) 
{ 
    $menu = array_filter($items, function ($item) use ($parentId) { 
     return  $item['parent_id'] == $parentId; 
    }); 
    foreach ($menu as &$item) 
    { 
     $subItems = makeMenu($items, $item['id']); 
     if (!empty($subItems)) 
     { 
      $item['sub_menu'] = $subItems; 
     } 
    } 
    return $menu; 
} 

Вызов функции makeMenu($yourArray,$parentID)

makeMenu($all,0); ////parent ID is 0 by default while calling.. 

 Смежные вопросы

  • Нет связанных вопросов^_^