我想在一个单独的行中显示我帖子的内容,每当单击选项卡时,一次显示一个。我已经做到了这一点,但问题是,它只显示最后一个选项卡的输出。其他选项卡没有任何作用。
我想我需要一个for循环来将所有内容存储在一个数组中,然后输出到第二行。
<div class="page-tile row">
<?php $i = 0; ?>
<?php while( $page_query->have_posts() ) : $page_query->the_post(); ?>
<div class="tile col-lg-2 col-md-2 col-sm-2 col-xs-12">
<a class="nav nav-tabs" role="tablist" href="#collapse-<?php the_ID(); ?>" data-toggle="tab" aria-expanded="false" aria-controls="collapse-<?php the_ID(); ?>">
<?php the_post_thumbnail("kontakt-thumb",array(\'class\' => \'img-responsive\')); ?>
</a>
</div>
<?php ob_start() ?>
<div class="kontakt-content tab-content">
<div class="tab-pane" role="tabpanel" id="collapse-<?php the_ID(); ?>"> <?php echo the_content(); ?> </div>
</div>
<?php $output = ob_get_clean(); ?>
<?php $i++; ?>
<?php endwhile; ?>
单击选项卡时需要显示以下内容。
<div class="row">
<?php echo $output; ?>
</div>
最合适的回答,由SO网友:Landing on Jupiter 整理而成
每次迭代循环时,都会覆盖$output,这就是为什么只获取最后一个选项卡的数据。通过将$output的值存储为数组,可以避免这种情况。下面是一个基于您的代码的示例。我的编辑遵循每个注释块。
<?php
/*
* Create an empty array
*/
?>
<?php $outputs = array(); ?>
<div class="page-tile row">
<?php $i = 0; ?>
<?php while ( $page_query->have_posts() ) : $page_query->the_post(); ?>
<div class="tile col-lg-2 col-md-2 col-sm-2 col-xs-12">
<a class="nav nav-tabs" role="tablist" href="#collapse-<?php the_ID(); ?>" data-toggle="tab" aria-expanded="false" aria-controls="collapse-<?php the_ID(); ?>">
<?php the_post_thumbnail( "kontakt-thumb", array( \'class\' => \'img-responsive\' ) ); ?>
</a>
</div>
<?php ob_start() ?>
<div class="kontakt-content tab-content">
<div class="tab-pane" role="tabpanel" id="collapse-<?php the_ID(); ?>"> <?php echo the_content(); ?> </div>
</div>
<?php
/*
* Store the data with a new array key
*/
?>
<?php $outputs[] = ob_get_clean(); ?>
<?php $i++; ?>
<?php endwhile; ?>
现在,对于选项卡,遍历数组。
<div class="row">
<?php
/*
* Iterate through the array
*/
foreach( $outputs AS $output ) {
echo $output;
}
?>
</div>