循环使用PHP和WordPress按类别组织和显示自定义帖子

时间:2019-05-27 作者:abihuniak

我正在开发一个页面,要求我在手风琴风格的下拉列表中显示自定义帖子类型的类别列表。类别名称将作为手风琴标题,内容将是与每个特定类别相关的帖子。下图总结了我最终将要完成的任务。

Bootstrap Accordion drop-down for categories mock-up

我已经能够成功地检索类别名称并将其分配到一个手风琴下拉列表,但现在发生的是,我的代码正在添加新的单元格,即使这两篇文章与类似的类别名称相关联。

Bootstrap Accordion drop-down duplicating categories

Arrrrg,我觉得我离得太近了!下面是我的代码到目前为止的一个片段。

<div id="accordion" class="col-8" role="tablist" aria-multiselectable="true">
          <?php 
                $args = array(
                    \'post_type\' => \'our_work\',
                    \'posts_per_page\' => -1,
                    \'orderby\' => \'category\',
                    \'hide_empty\' => 0,
                );  
                $loop = new WP_Query( $args );
                while ( $loop->have_posts() ) : $loop->the_post();
            ?>
    <div class="card box-shadow">

        <div class="card-header" role="tab" id="<?php the_ID(); ?>">
            <h5 class="mb-0">
                <a data-toggle="collapse" data-parent="#accordion" href="#collapse<?php the_ID(); ?>"
                    aria-expanded="false" aria-controls="collapseOne">
                    <?php
                      foreach((get_the_category()) as $category) { 
                          echo $category->cat_name . \' \'; 
                      }
                    ?>
                </a>
            </h5>
        </div>

        <div id="collapse<?php the_ID(); ?>" style="transition: all 0.5s ease 0s;" class="collapse nomnom"
            role="tabpanel" aria-labelledby="heading<?php the_ID(); ?>">
            <div class="card-block">
                <h1><?php the_title(); ?></h1>
                <p><?php the_Content(); ?></p>
            </div>
        </div>

    </div>
    <?php endwhile; wp_reset_query(); ?>
</div>
我怀疑的是,我没有正确设置循环,因此正在添加新的单元格。

我对“WordPress循环”的工作还是相当陌生的,所以任何建议都将不胜感激!!!

1 个回复
SO网友:wsoil

将此添加到$args之后

$categories = get_terms(\'category\', $args); //get all categories
$count = count($categories ); //count categories
if ( $count > 0 ){ //Check if you got some categories
foreach ( $categories as $category ) { 
 $args[\'cat\'] = $category->term_id; //get the id of each category and add it as a parameter
$loop_our_work = new WP_Query( $args ); //start a new query with \'cat\' parameter inside of it for each category
if($loop_our_work ->have_posts()) { //always check if query have posts
    //echo here category name or whatever you need about category
while( $loop_our_work ->have_posts() ) : $loop_our_work ->the_post(); 
//echo here whatever you need for each post on current category inside the loop
endwhile;
} //endif
代码没有经过测试,但我希望它能帮助您

相关推荐

WordPress插件PHP未调用函数

我最近创建了一个自定义WordPress插件来跟踪我网站上的提交、评论等内容。我在一个主插件文件中构建了所有这些内容,在发布之前,我希望对其进行一些清理,并将代码拆分为单独的文件。在过去的几个小时里,我一直在试图自己弄明白这一点,但我一点都不高兴。主要的phpinclude plugin_dir_path( __FILE__ ) . \'reviews.php\'; reviewsPanel(); 审查。php<?php function reviews