在循环的不同部分显示特定类别的级别

时间:2017-11-20 20:23:58

标签: php wordpress loops categories hierarchy

我需要在Wordpress循环中组合两件事。

首先,我想从所有类别中显示每个二级类别(示例中的C1.1和C2.1)的类别名称。

然后我想在每个二级类别标题下放一张表。它们应该具有与每个第二级类别的第三级(如示例中的C1.1.1)一样多的列。在每个栏目中,我想显示该第三级别的每个帖子。

类别层次结构:

C1
— C1.1
— — C1.1.1
— — C1.1.2
— — C1.1.3
C2
— C2.1
— — C2.1.1
— — C2.1.2
...

这是一个例子:

C1.1

+——————————+——————————+——————————+
|  C1.1.1  |  C1.1.2  |  C1.1.3  |
+——————————+——————————+——————————+
|   Post   |   Post   |   Post   |
|   Post   |   Post   |          |
|          |   Post   |          |
+——————————+——————————+——————————+

C2.1

+——————————+——————————+
|  C2.1.1  |  C2.1.2  |
+——————————+——————————+
|   Post   |   Post   |
|   Post   |   Post   |
|   Post   |   Post   |
|          |   Post   |
|          |   Post   |
+——————————+——————————+

...

是否有可能在自定义模板页面中执行此操作?

1 个答案:

答案 0 :(得分:0)

试试这个,

<?php
//Get All Categories like Parent, parent of child, child of subchild (Level 0 , 1, 2)
$taxonomy = 'category'; //Choose the taxonomy
$terms = get_terms( $taxonomy ); //Get all the terms

foreach ($terms as $term) { //Cycle through terms, one at a time

  // Check and see if the term is a top-level parent. If so, display it.
  $parent = $term->parent;
  if ( $parent=='0' ) {

      $term_id = $term->term_id; //Define the term ID
      $term_link = get_term_link( $term, $taxonomy ); //Get the link to the archive page for that term
      $term_name = $term->name;
      //Main Category
      echo '<a class="ccats" href="' . $term_link . '"><span class="label">' . $term_name . '</span></a><br/>';

        $childargs = array('parent' => $term_id);
        $childcategories = get_categories( $childargs );
        foreach($childcategories as $childcategory) {
            $childterm_id = $childcategory->term_id;
            //Parent of Child Category
            echo '<p>Category: <a href="' . get_category_link( $childcategory->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $childcategory->name ) . '" ' . '>' . $childcategory->name.'</a> </p> ';

                $subchildargs = array('parent' => $childterm_id);
                $subchildcategories = get_categories( $subchildargs );
                foreach($subchildcategories as $subchildcategory) {
                  //Parent of Child of Subchild Category
                    echo '<p>SubCategory: <a href="' . get_category_link( $subchildcategory->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $subchildcategory->name ) . '" ' . '>' . $subchildcategory->name.'</a> </p> ';
                  }
          }
      }
}
?>