2014-05-20 82 views
0

我想列出自定义分类中的所有术语,但我想至少将它们分成3列,包括他们的孩子有一个视觉平衡。这是我迄今为止所做的。在达到最大期限后,我一直在创建循环。就我所知,它用'ul'包裹了所有后续项目,而不是创建第二个ul并列出下一批。达到x的期限后,它应该在其中创建另一个'ul'元素列表类别。总共有3列。在特定的自定义分类中显示多列类别

<?php 

     $get_cats = wp_list_categories('echo=0&title_li=&depth=2&hide_empty=0,&taxonomy=industries'); 
     // Split into array items 

     $cat_array = explode('</li>',$get_cats); 
     // Amount of categories (count of items in array) 
     $results_total = count($cat_array); 
     // How many categories to show per list (round up total divided by 3) 
     $cats_per_list = ceil($results_total/3); 
     // Counter number for tagging onto each list 
     $list_number = 1; 
     // Set the category result counter to zero 
     $result_number = 0; 
     ?> 

     <?php echo $cats_per_list ; ?> 

     <ul class="cat_col" id="cat-col-<?php echo $list_number; ?>"> 

     <?php 
     foreach($cat_array as $category) { 

      $result_number++; 

      if($result_number >= $cats_per_list) { 
       $list_number++; 
       echo $category.'</li> </ul> <ul class="cat_col" id="cat-col-'.$list_number.'">'; 
      } 
      else { 
       echo $category.'</li>'; 
      } 

     } 
     ?> 
     </ul>   

回答

1

该代码是非常错误的。只是一对夫妇的观察:

下一页中你将不得不result_number重置为0,因为计数重新开始在

if($result_number >= $cats_per_list) { 

块。由于$ cats_per_list被定义为总金额的平均值,因此您当前的代码只会遇到一次该情况。之后,它会继续向上计数,并始终> = $ cats_per_list

下一步:它是狡猾的,但你可能不需要ceil结果,因为你使用> =,该操作几乎做同样的事情,因为1.5例如将满足> = 1的标准。

试试这个,看看它是否是更好:

<?php 

     $get_cats = wp_list_categories('echo=0&title_li=&depth=2&hide_empty=0,&taxonomy=industries'); 
     // Split into array items 

     $cat_array = explode('</li>',$get_cats); 
     // Amount of categories (count of items in array) 
     $results_total = count($cat_array); 
     // How many categories to show per list (round up total divided by 3) 
     $cats_per_list = ceil($results_total/3); 
     // Counter number for tagging onto each list 
     $list_number = 1; 
     // Set the category result counter to zero 
     $result_number = 0; 
     ?> 

     <?php echo $cats_per_list ; ?> 

     <ul class="cat_col" id="cat-col-<?php echo $list_number; ?>"> 

     <?php 
     foreach($cat_array as $category) { 

      $result_number++; 

      if($result_number >= $cats_per_list) { 
$result_number = 0; 
       $list_number++; 
       echo $category.'</li> </ul> <ul class="cat_col" id="cat-col-'.$list_number.'">'; 
      } 
      else { 
       echo $category.'</li>'; 
      } 

     } 
     ?> 
     </ul> 
+0

嗨乔恩,我很感谢对检查出我的代码。虽然,我仍然无法弄清楚如何显示列上的列表项。当我尝试你的建议时,后面的列嵌套在第一列,不应该是这种情况。我试图在3列上分发所有的

  • 。我也试着修改这一行 echo $ category。'
    • '; 认为它会解决问题。 – Pennf0lio

    +0

    这是我在尝试提出建议时得到的输出。请注意,这些列嵌套在主列上,而第二列仅列出了应列出至少68个项目的几个项目。在最后一栏,它确实没有列出任何项目。 http://pastebin.com/GxxJUJ5k – Pennf0lio

    相关问题