循环父字词{Display Posts}和循环子字词{Display Posts}

时间:2017-03-19 作者:codeview

我正试图通过category 分类并显示附加到每个term, 标题(术语名称)分隔每个术语的帖子(并显示所有术语,即使没有附加到任何帖子)。

此外,我需要将子术语显示为其父术语标题下的子标题。

例如:

  • AUTOMOTIVE (顶级/父项,无子项)
  • 第1后
  • 第2后
    • BUILDING SUPPLY (父术语)
      • Drywall (儿童期)
        • 第3期后
        • 第4期后
              • 在阅读和试验数小时后;错误我让这段代码先只显示顶级的父术语。我希望Wordpress忍者能让我开心一天,并指引我现在该去哪里:

                    <?php 
                        $taxonomy = \'category\'; // Choose the taxonomy
                        // Get all the terms
                        $terms = get_terms( $taxonomy, array(
                            \'hide_empty\' => false,) // Show terms with no posts attached
                            );
                        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\' ) {
                                echo \'<h2>\' . $term->name . \'</h2>\';
                
                                 ***Need to loop term posts here, with headings for child terms***
                
                            } 
                        }
                    ?>
                

1 个回复
SO网友:Chirag

您需要首先筛选父类别,然后如果您得到任何父类别的子类别,则需要查找该类别的帖子。

请尝试以下代码,如果您有任何疑问,请告诉我:

<?php 
    $terms = get_terms( array(
        \'taxonomy\' => \'category\', //Default category
        \'hide_empty\' => false,                  
    ) );

    echo "<ul>";
    foreach ($terms as $term) {                     
        $parent = $term->parent;
        if ( $parent == \'0\' ) {
            /* Parent category */
            echo \'<li>\' . $term->name . \'</li>\';

            /* Child category */
            $childrens = get_categories( array (\'parent\' => $term->term_id ));
            echo "<ul>";
            foreach($childrens as $children) :                          
                $args = array(
                    \'post_type\' => \'post\',
                    \'tax_query\' => array(
                        array(
                            \'taxonomy\' => \'category\', //Default category
                            \'field\'    => \'slug\',
                            \'terms\'    => $children->slug,
                        ),
                    ),
                );
                echo \'<li>\' . $children->name . \'</li>\';    
                /*  Child category posts */
                ?>                          
                <ul>
                <? 
                $loop1 = new wp_Query($args);
                while($loop1->have_posts()) : $loop1->the_post();
                    the_title( \'<h6>\', \'</h6>\' );
                endwhile;
                wp_reset_query(); 
                ?>
                </ul>
                <?php   
            endforeach;
            echo "</ul>";

            /*  Parent category posts */
            if (empty($childrens))
            {
            ?>                          
            <ul>
            <? 
            $args = array(
                \'post_type\' => \'post\',
                \'tax_query\' => array(
                    array(
                        \'taxonomy\' => \'category\',
                        \'field\'    => \'slug\',
                        \'terms\'    => $term->slug,
                    ),
                ),
            );
            $loop = new wp_Query($args);
            while($loop->have_posts()) : $loop->the_post();
            the_title( \'<h6>\', \'</h6>\' );
            endwhile;
            wp_reset_query(); 
            ?>
            </ul>
            <?php
            }   
        }
    }
    echo "</ul>";
?>

相关推荐

get_posts custom field

这是一个愚蠢的问题,但我找不到合适的方式问谷歌。所以,如果这是一个重复的问题,很抱歉。我提供了一个带有复选框的自定义字段,用户可以检查是否希望此特定帖子进入主页。因此,在我的主页上,我呼吁所有已激活选中的帖子。我正在为自定义帖子类型CV创建自定义字段:function add_custom_post_meta_box() { add_meta_box( \'custom_post_meta_box\', // $id \'Campos Per