如何在一个页面上回显子类别中的类别,子类别和帖子?

时间:2014-07-08 15:48:20

标签: php wordpress conditional custom-post-type

我在使用wordpress并设置了自定义帖子类型(称为product& custom taxonomy,名为product_category),我想做以下操作

我将有一个名为目录的页面,并希望在一个页面上显示子类别下的所有类别/子类别和产品。

但我不确定它的代码。

获取所有类别并回显标题,对于每个父类别,子项回显子类别,然后其他产品只回显父类别和产品。

第1类(回声父母的东西)      子类别1(echo子类别的东西)           帖子1(回声帖子)           发布2      子类别2           发布1           发布2

第2类      子类别1           发布1           发布2

第3类      子类别1           发布1           发布2

1 个答案:

答案 0 :(得分:0)

此代码应该适合您。

$top_level_terms = get_terms( 'product_cat', array( 'parent' => 0 ) );
foreach( $top_level_terms as $top_term ) 
{
        $child_terms = get_terms( 'product_cat', array( 'child_of' => $top_term->term_id ));
        //Parent Category Name
        echo '<b>'.$top_term->name .'</b><br>'; 
    $top_id=$top_term->term_id;
    if(count($child_terms)>0)
    {
        foreach ( $child_terms as $child_term ) 
        {
                 $id=$child_term->term_id;
                 //Child category name
                  echo '<b>=>' .$child_term->name .'</b><br>';

            $myposts=get_posts(array(
            'post_type' => 'product',
            'tax_query' => array(
                array(
                'taxonomy' => 'product_cat',
                'field' => 'term_id',
                'terms' => $id)
            ))
                );
echo '<ul>';
        foreach ($myposts as $mypost) {
            //Posts
              echo '<li>'.$mypost->post_title.'</li>' ;

        }echo '</ul>';
        wp_reset_postdata();

        } 
    }
    else
    {
    $myposts=get_posts(array(
                'post_type' => 'product',
                'tax_query' => array(
                    array(
                    'taxonomy' => 'product_cat',
                    'field' => 'term_id',
                    'terms' => $top_id)
                ))
                    );echo '<ul>';
            foreach ($myposts as $mypost) {
                   echo '<li>'.$mypost->post_title.'</li>' ;

        }
echo '</ul>';
     wp_reset_postdata();
    }


}

如果您有任何问题,请告诉我