2017-01-20 1 views
1

Wordpress Woocommerce 사이트 용 템플릿을 설정하고 있으며 제품 카테고리, 하위 카테고리 및 제품 목록을 동적 메뉴로 표시하려고합니다. 이런 식으로 행동하길 바래.Woocommerce 카테고리, 하위 카테고리 및 제품 목록

category 1 
    -subcategory 1 
    -product 1 
    -product 2 
    -subcategory 2 
    -product 3 
category 2 
    -product 4 

나는

<?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; 
          /*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>"; 
     } 
} 
?> 

을 원하는에 가까운 그러나이 올바르게 하위 범주를 포함하는 범주를 닫지 않고 다음 코드를 발견하고, 대신 다음과 같습니다

category 1 
    -subcategory 1 
    -product 1 
    -product 2 
    -subcategory 2 
    -product 3 
    category 2 
    -product 4 

카테고리 2가 하위 카테고리와 어떻게 정렬되어 있는지주의하십시오.

이 문제에 도움을 주셔서 감사합니다.

+0

체크 아웃 http://stackoverflow.com/questions/32585441/woocommerce-plugin-nested-products-for-subcategories/32602389#32602389 –

+0

내가 뭘했는지 알 수 없습니다. 내가 코딩 초보자 인 것처럼 나를 참 아라. 이 링크는 웹 사이트 메뉴를 대신 할 무언가를 갖고 싶어하는 커스텀 페이지를위한 것 같습니다. 위에서 올린 코드는 하위 카테고리가 포함 된 카테고리의 닫기 태그 문제를 제외하고 작동합니다. 카테고리에 부모가 있는지 확인하는 것이 잘못되었다고 생각합니다. – whalecabinet

답변

1

많은 코드를 작성한 후 코드를이 코드로 변경했습니다.

<?php 
$taxonomy = 'product_cat'; 
$orderby = 'name'; 
$order = 'ASC'; 
$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 = 1; 

$args = array(
    'taxonomy' => $taxonomy, 
    'orderby' => $orderby, 
    'order' => $order, 
    'show_count' => $show_count, 
    'pad_counts' => $pad_counts, 
    'hierarchical' => $hierarchical, 
    'title_li' => $title, 
    'hide_empty' => $empty, 
    'parent' => 0 
); 

$all_categories = get_categories($args); 
foreach ($all_categories as $cat) { 
    $category_id = $cat->term_id; 
    $args2 = array('taxonomy' => $taxonomy,'parent' => $category_id,'hierarchical' => $hierarchical, 'orderby' => $orderby, 'order' => $order,'hide_empty' => $empty); 
$categories = get_categories($args2); 
$categories_cnt = count(get_categories($args2)); 


if ($categories_cnt != 0){ 
echo "<ul class='category'><li>".$cat->name; 
$sub_cats = get_categories($args2); 
      if($sub_cats) { 
echo "<ul>"; 
       foreach($sub_cats as $sub_category) { 
        echo "<li>".$sub_category->cat_name; 

        $args = array('post_type' => 'product','product_cat' => $sub_category->slug, 'orderby' => $orderby, 'order' => $order); 
          $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 echo "</li>"; 

        } 
echo "</ul></ul>"; 
} 
} 
else { 
    echo "<ul class='category'><li>".$cat->name; 
    $args = array('post_type' => 'product', 'product_cat' => $cat->slug, 'orderby' => $orderby, 'order' => $order); 
        $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(); 
    echo "</li></ul>"; 

} 

} 
?> 

확실히 지저분하고 중복 코드가 포함되어 있지만 지금은 저에게 효과적 일 것입니다.

관련 문제