显示当前类别和子类别中的所有帖子

时间:2014-02-27 15:09:08

标签: php wordpress

我制作了一个名为“产品”的自定义帖子类型和一个名为“product_categories”的自定义分类。

这些类别具有以下结构:

  1. 第1类

    • 产品1
    • 产品2
  2. 第2类

    • 类别2.1
      • 产品3
      • 产品4
      • 产品5
    • 类别2.2
      • 产品6
      • 产品7
  3. 第3类
    • 类别3.1
      • 类别3.1.1
        • 产品8
        • 产品9
  4. 所以我只在每个类别的最后一个子类别级别上有产品。

    我想要实现的目标是:

    1)我有一个页面,其中显示所有主要类别:类别1,类别2,类别3

    2)例如,当我转到第3类时,我想要显示所有子类别和产品等级。

    你能帮帮我吗?我搜索了超过2天的解决方案,但无法使其正常工作......

    这是我能得到的最接近的:

    $args=array(
    'post_type'                => 'product',
    'child_of'                 => 0,
    'parent'                   => '',
    'orderby'                  => 'name',
    'order'                    => 'ASC',
    'hide_empty'               => 0,
    'hierarchical'             => 1,
    'exclude'                  => '',
    'include'                  => '',
    'number'                   => '',
    'taxonomy'                 => 'product_categories',
    'pad_counts'               => false,
    'depth'                    => 1
    );
    
    $categories=get_categories($args);
    
    foreach ( $categories as $category ) {
    
        if ( $category->parent > 0 ) {
            continue;   
        }
        echo '<h1 style="font-weight:bold">' . $category->name . '</h1>';
    
        $querystr = "SELECT $wpdb->posts.*
                      FROM $wpdb->posts, $wpdb->term_relationships, $wpdb->terms
                      WHERE term_id = (" . $category->cat_ID . ")
                      AND term_taxonomy_id = (" . $category->term_taxonomy_id . ")
                      AND ID = object_id
                      AND post_type = 'product'
                      AND post_status = 'publish'
                      ORDER BY post_date DESC";
    
        $posts = $wpdb->get_results($querystr, OBJECT);
    
        echo '<ul>';
            foreach ( $posts as $post ) {
    
                setup_postdata($post);  
    
                    echo '<li>'; the_title();   echo '</li>';
    
                    }
        echo '</ul>';
    
        $categories2 = get_terms('product_categories',array('parent' => $category->term_id , 'hide_empty'=> '0', 'hierarchical' => 1, 'depth' => 5 ));
        foreach ( $categories2 as $category ) {
    
        echo '<h2>' . $category->name . '</h2>';
    
        $posts = get_posts( array( 'product_categories' => $category->name, 'post_type' => 'product' ) );  
    
            echo '<ul>';
                foreach($posts as $post) { 
    
                    setup_postdata($post);  
    
                        echo '<li>'; the_title();   echo '</li>';
    
                        }
            echo '</ul>';
    
        }
    }
    

    此解决方案显示所有类别,不仅显示CURRENT类别子类,也不显示第三级子类别(类别3.1.1)

    非常感谢!

0 个答案:

没有答案