在我的新闻网站上,我的第一篇文章是全栏,之后所有旧的文章都是每行三栏。但现在我想让wordpress每三列a后面加一行,并将元素保留在行中。我尝试调整以下解决方案:Solution 1Solution 2Solution 3
但这一切都行不通。
以下是我获取帖子的代码:
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<div class=" entry-content">
<?php if (have_posts()) : ?>
<?php $post = $posts[0]; $c=0;?>
<?php while (have_posts()) : the_post(); ?>
<?php $c++;
if( !$paged && $c == 1) :?>
<?php get_template_part( \'template-parts/content\', \'aktuelles-first\' ); ?>
<div class="accordion">
<div class="row">
<?php else :?>
<?php get_template_part( \'template-parts/content\', \'aktuelles\' ); ?>
<?php endif;?>
<?php endwhile; ?>
<?php endif; ?>
</div></div>
</main><!-- #main -->
</div><!-- #primary -->
如果不改变我获取帖子的方式,有什么解决方案吗?
最合适的回答,由SO网友:phatskat 整理而成
如果我正确理解这个问题,我想你可以做些什么:
<div id="primary" class="content-area">
<main id="main" class="site-main" role="main">
<div class=" entry-content">
<?php
if ( have_posts() ) {
$post = $posts[0];
$c = 0;
$i = 0;
while ( have_posts() ) {
the_post();
// start a new row for the first post and every three posts
if ( ! $paged && ( 0 == $c || 0 == ( $c % 3 ) ) ) {
get_template_part( \'template-parts/content\', \'aktuelles-first\' );
echo my_code_open_row();
} else {
get_template_part( \'template-parts/content\', \'aktuelles\' );
}
// close the opened divs above
if ( $i > 2 ) {
echo my_code_close_row();
$i = 0; // Reset the row close counter
}
$c++;
$i++;
}
// Close the row if we never get to the row closing
// before we leave the loop
if ( $i < 2 ) {
echo my_code_close_row();
}
}
?>
</div>
</div>
</main><!-- #main -->
</div><!-- #primary -->
<?php
function my_code_open_row() {
return <<<HTML
<div class="accordion">
<div class="row">
HTML;
}
function my_code_close_row() {
return <<<HTML
</div>
</div>
HTML;
}