创建自定义分类和帖子的分层列表

时间:2018-02-19 作者:jimmyahughes

我想在自定义分类法中创建一个3层的术语层次列表,其中每个底层术语中最多包含10篇文章。

e、 g。

Custom Taxonomy
- Parent Term 1
-- Child Term 1
--- Post 1
--- Post 2
-- Child Term 2
--- Post 1
--- Post 2
--- Post 3
--- Post 4
-- Child Term 3
etc
我希望最终有一套“破坏者”或“手风琴”格式的展示,但我相信我能处理好这部分。

我已经考虑了一些选项,例如wp_list_categories() 和一个或两个自定义函数,但我还没有找到解决方案。如能就此提供任何指导,我们将不胜感激。

1 个回复
SO网友:jimmyahughes

今天下午我一直在研究一个解决方案,并提出了以下建议。但这可能不是最优雅的方式,所以我愿意接受进一步的评论。

function custom_tax_list_and_posts() {

    $post_type = \'CUSTOM_POST_TYPE_NAME\';
    $taxonomy = \'CUSTOM_TAXONOMY_NAME\';

    // Get all of the parent terms in the custom taxonomy and include empty ones
    $parent_terms = get_terms( $taxonomy, array( \'parent\' => 0, \'hide_empty\' => false ) );

    echo \'<ul>\';

    // Start looping parent terms
    foreach( $parent_terms as $pterm ) :

        // Get all of the child terms within the parent term only
        $child_terms = get_terms( $taxonomy, array( \'parent\' => $pterm->term_id, \'hide_empty\' => false ) );

        echo \'<li>\';
        echo \'<h3>\' . $pterm->name . \'</h3>\';

        echo \'<ul>\';

        // Start looping through child terms
        foreach( $child_terms as $cterm ) :

            echo \'<li>\';
            echo \'<h3>\' . $cterm->name . \'</h3>\';

            // Configure custom post arguments
            $args = array(
                \'post_type\' => $post_type,
                \'posts_per_page\' => 10, // Or however many you need
                \'tax_query\' => array(
                    array(
                        \'taxonomy\' => $taxonomy,
                        \'field\' => \'slug\',
                        \'terms\' => $cterm->slug
                    )
                )
            );

            query_posts($args);

            if ( have_posts() ) :

                echo \'<ul>\';

                // Start looping posts within child terms only
                while ( have_posts() ) : the_post();

                    echo \'<li>\';
                    echo \'<p class="post-date">\' . get_the_date(\'j F Y\') . \'</p>\';
                    echo \'<h3><a href="\' . get_the_permalink() . \'">\' . get_the_title() . \'</a></h3>\';
                    echo \'<p>\' . get_the_excerpt() . \'</p>\';
                    echo \'<a class="read-more" href="\'. get_the_permalink() . \'">Read more ...</a>\';
                    echo \'</li>\';

                endwhile;

                echo \'</ul>\';

            endif;

        endforeach;

        echo \'</ul>\';

        echo \'</li>\';

    endforeach;

    echo \'</ul>\';

}

结束

相关推荐

rewrite rules hierarchical

我希望我的WordPress遵循以下规则:/productes/ 包含所有产品的页面/productes/[category]/ 包含该类别所有产品的分类页面/productes/[category]/[subcategory]/ 包含该类别所有产品(与2相同)的分类页面/[productes]/[category]/[product]/ A.single-productes.php 将显示类别产品/[productes]/[category]/[subcategory]/[product]/ A.sin