Wordpress - 如何显示按自定义分类法分组的帖子?

时间:2017-09-19 14:08:45

标签: php wordpress foreach while-loop custom-post-type

我正在使用自定义帖子类型和自定义分类创建常见问题解答页面。我正在尝试为每个分类法创建一个无序列表,以便对FAQ进行分组。在那个无序列表中,我希望第一个列出的项目是分类法名称,然后对分类中的所有问题重复第二个列出的项目。这是我正在处理link的页面。

它目前正在复制帖子,而不是在合法的分类法中显示。

                        <?php
                        // get all the categories from the database
                        $cats = get_terms( array(
                            'taxonomy' => 'faq_categories',
                        )); 

                        // loop through the categories
                        foreach ($cats as $cat) {
                            // setup the category ID
                            $cat_id = $cat->term_id;
                        ?>

                                <!-- Make a header for the category -->
                        <ul id="<?php echo $cat->slug; ?>" class="cd-faq-group">
                            <li class="cd-faq-title">
                                <h2>Questions <?php echo $cat->name; ?></h2>
                            </li>

                            <?php

                            // create a custom wordpress query

                            query_posts( array(
                                'post_type' => 'faqs',
                                'tax_query' => array( 
                                    array( 
                                        'taxonomy' => 'faq_categories', //or tag or custom taxonomy
                                        'field' => 'slug', 
                                        'terms' => 'for-women'
                                    ) 
                                ) 
                            ));

                            // start the wordpress loop!
                            if (have_posts()) : while (have_posts()) : the_post(); ?>

                            <li>
                                <a class="cd-faq-trigger" href="#0"><?php the_title(); ?></a>
                                <div class="cd-faq-content">
                                    <?php the_content(); ?>
                                </div> 
                            </li>

                            <?php endwhile; endif; // done our wordpress loop. Will start again for each category 

                            wp_reset_postdata();
                            ?>


                        </ul>
                        <?php } // done the foreach statement ?>

3 个答案:

答案 0 :(得分:0)

query_post中,您的tax_query field term_id应为terms,而$cat_id将被void printRandom(int C[], int n, int seed) { D = C; size = n; for i = 1:n { x = rand( [0... size) ); print element at D[x] D[x] = D[size-1]; size--; } } 分配给service iptables stop变量,一个硬编码的术语。

答案 1 :(得分:0)

在迭代HTML5数组时,您的查询不会发生变化。也许改变“条款”的价值。数组到$cats会给你更好的结果。

答案 2 :(得分:0)

非常感谢你。你们都对我所缺少的东西提供了很好的见解。我现在已经解决了这个问题,这就是我在考虑你的建议时解决问题的方法。

                        <?php

                            $cats = get_terms( 
                                array(
                                    'taxonomy' => 'faq_categories',
                                    'orderby' => 'term_id',
                                    'order' => 'ASC'
                                )
                            ); 

                            foreach ($cats as $cat) :
                        ?>


                        <ul id="<?php echo $cat->slug; ?>" class="cd-faq-group">
                            <li class="cd-faq-title">
                                <h2>Questions <?php echo $cat->name; ?></h2>
                            </li>
                        <?php

                            $questions = new WP_Query(
                                array(
                                    'category_name' => $cat->slug
                                )
                            );

                            $questions = new WP_Query( array(
                                'post_type' => 'faqs',
                                'order' => 'ASC',
                                'tax_query' => array( 
                                    array( 
                                        'taxonomy' => 'faq_categories',
                                        'field' => 'slug', 
                                        'terms' => array($cat->slug),
                                    )
                                ) 
                            ));
                        ?>

                        <?php if ($questions->have_posts()) :  while ($questions->have_posts()) : $questions->the_post();?>

                            <li>
                                <a class="cd-faq-trigger" href="#0"><?php the_title(); ?></a>
                                <div class="cd-faq-content">
                                    <?php the_content(); ?>
                                </div>
                            </li>

                            <?php endwhile; ?>

                            <?php wp_reset_postdata(); ?>
                        <?php endif; ?>