Add row after three columns

时间:2015-10-05 作者:SirPrice

在我的新闻网站上,我的第一篇文章是全栏,之后所有旧的文章都是每行三栏。但现在我想让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 -->
如果不改变我获取帖子的方式,有什么解决方案吗?

2 个回复
最合适的回答,由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;
}

SO网友:Aric Watson

我不确定我是否完全理解这个问题,但看起来你正在使用$c跟踪你在哪个帖子上。我认为你缺少的是你需要设置它,这样每个第四个帖子都会受到不同的对待,对吗?您可以使用模数运算符进行测试if ($c % 4 == 0) { - 然后为该行添加特殊的HTML。记住再次测试并根据需要关闭div。

相关推荐

Last post in loop when even

我使用这段代码尝试检查每个页面上的最后一篇文章循环是否均匀,以便添加不同的类。这可以检查它是否是最后一篇文章:( ( 1 == $wp_query->current_post + 1 ) == $wp_query->post_count ) 这可以检查它是否是一个均匀的帖子( $wp_query->current_post % 2 == 0 ) 但这并没有检查这是否是最后一篇文章,甚至。 ( ( 1 == $wp_query->current_post + 1