繁体   English   中英

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

[英]Looping to organize and display custom posts by category using PHP and WordPress

我正在开发一个页面,该页面要求我在手风琴式下拉菜单中显示自定义帖子类型的类别列表。 类别名称将充当手风琴标题,其内容将作为与每个特定类别相关的职位。 下图总结了我最终将完成的工作。

Bootstrap Accordion下拉菜单用于类别模拟

我已经能够成功检索类别名称并将它们分配给手风琴下拉列表,但是发生的是,即使两个帖子都与相似的类别名称相关联,我的代码仍在添加新的单元格。

Bootstrap手风琴下拉菜单重复类别

Arrrrrg,我觉得我很亲近! 这是到目前为止我的代码的摘要。

<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循环”还很陌生,因此任何建议将不胜感激!!!

编辑为使用echo代替。 这应该更清洁,希望能正常工作(未经测试)

  <?php 
   $args = array(
      'post_type' => 'our_work',
      'posts_per_page' => -1,
      'orderby' => 'category',
      'hide_empty' => 0,
   );  
  $loop = new WP_Query( $args );
  $cat = '';//set a variable to catch category
  $first = 0;
  echo '<div id="accordion" class="col-8" role="tablist" aria-multiselectable="true">';
  while ( $loop->have_posts() ) : $loop->the_post();
    $post_cat = '';
    foreach(( get_the_category() ) as $category) { 
      $post_cat = $category->cat_name . ' '; 
    }
    if($first == 0){
      $first = 1;
      $cat = $post_cat;
      echo '<div class="card box-shadow">';
      echo'<div class="card-header" role="tab" id="'.get_the_id().'">';
      echo'<h5 class="mb-0">';
      echo'<a data-toggle="collapse" data-parent="#accordion" href="#collapse'.get_the_id().'"aria-expanded="false" aria-controls="collapseOne">'.$post_cat.'</a>';
      echo'</h5>';
      echo'</div>';
      //start collapse pannel
      echo'<div id="collapse'.get_the_id().'" style="transition: all 0.5s ease 0s;" class="collapse nomnom" role="tabpanel" aria-labelledby="heading'.get_the_id().'">';
    }
    if($cat != $post_cat){
      $cat = $post_cat;
      echo'</div>';//close collapse
      echo'</div>';//close box shadow
      echo '<div class="card box-shadow">';
      echo'<div class="card-header" role="tab" id="'.get_the_id().'">';
      echo'<h5 class="mb-0">';
      echo'<a data-toggle="collapse" data-parent="#accordion" href="#collapse'.get_the_id().'"aria-expanded="false" aria-controls="collapseOne">'.$post_cat.'</a>';
      echo'</h5>';
      echo'</div>';
      //start collapse pannel
      echo'<div id="collapse'.get_the_id().'" style="transition: all 0.5s ease 0s;" class="collapse nomnom" role="tabpanel" aria-labelledby="heading'.get_the_id().'">';
    }
    echo'<div class="card-block">';
    echo'<h1>'.get_the_title().'</h1>';
    echo'<p>'.get_the_content().'</p>';
    echo'</div>';  
    if (($loop->current_post +1) == ($loop->post_count)) { 
      echo '</div>';//close collapse 
      echo '</div>';//box shadow close
    } 
  endwhile; 
  wp_reset_query();
  echo '</div>';//close accordian close
    ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM