-1

私のループは、これを使用して2つの列に投稿を表示します:

<?php
if (have_posts()): while (have_posts()) : the_post();
 $count++;
?>
    <?php  if ($count == 1) : ?>
    <div class="home-ci-row">

    <div style="padding: 0px;" class="main-column-item-wrap">
    CONTENT OF POST : Title, Thumbnail, Excerpt... etc
    </div>

    <div class="home-ci-gap"></div><!-- /* the gap */ -->

    <?php elseif ($count == 2) : ?>    

   <div style="padding: 0px;" class="main-column-item-wrap">
   CONTENT OF POST : Title, Thumbnail, Excerpt... etc
   </div> <!-- main-column-item-wrap -->


</div><!-- /* home-ci-row*/ -->

<?php $count = 0; ?>

      <?php else : ?>
    // No posts
<?php endif; endwhile; endif; ?>

<div class="home-ci-row">最初のカウントで開き、2 番目のカウントで閉じることがわかります。</div>

したがって、ループの投稿数が偶数の場合はうまく機能しますが、奇数の場合はdivを閉じません

だから私の考えはこれです:ループが偶数の場合

http://i.stack.imgur.com/Hu4Ua.png

ループの投稿数が奇数の場合

http://i.stack.imgur.com/JjqzZ.png

4

3 に答える 3

2

ちなみに、次のようなことができます。

<?php
$count=0;
while(have_posts()){
    if($count%2==0){
        echo '<div class="home-ci-row">';
        //draw your left div here
    }else if($count%2==1){
        //draw your gap here
        //draw your right div here
        echo '</div>';
    }
    $count++;
}
//close div if count is an odd number
if($count%2==1) echo '</div>';
?>
于 2013-03-09T08:45:29.250 に答える
1

forループにスワップすることは可能ですか?これはあなたが必要なものですか?

for ($i = 0; $i < $numberOfElements; $i++)
{ 
    //if (odd number) && (this is the last element)
    if (($i % 0 == 1) && ($i == $numberOfElements - 1))
    {
        //Special Case
    }
    else
    {
        //Normal Case
    }
}

警告:エラーに注意してください。PHPは私の最強の言語ではありません

于 2013-03-09T08:37:20.417 に答える
0

この質問はWP Development StackExchangeでfischiによって回答されました

彼の答えから引用:

これははるかに簡単に行うことができます。float で実現できるレイアウトを作成しているため、Row を毎回宣言する必要はありません。

私のコード例$countでは、HTML 要素のクラスを決定するだけです。表示される投稿の合計数と組み合わせて。

合計投稿数に$wp_query->post_count達し、$countAND 合計数が奇数の場合、 Element に Class を指定しfullwidthます。同様に、それが 1 番目か 2 番目かを判断します (IF ステートメントを参照)。

あとは、ループ内の各 HTML 要素に対応するクラスを出力するだけです。クラスを除いて、互いに異なる要素はありません。

奇数/偶数を判断するためModuloに、PHP ( ) で Operatorを使用します。使ったら%納まり半端ない。この演算子についてよくわからない場合は、こちらをお読みください1$count % 2$count

したがって、コードは次のようになります。

<?php
    $count = 0;
    if (have_posts()): while (have_posts()) : the_post();
        if ( ++$count == $wp_query->post_count && ( $wp_query->post_count % 2 ) == 1 ) {
            // if final count is reached AND final count is odd
            // full width item
            $postclass = "fullwidth";
            $opentag = '';
            $closingtag = '</div>';
        } else if ( ( $count % 2 ) == 1 ) {
            // if $count is odd it is the first item in a 'row'
            $postclass = "halfwidth first";
            $opentag = '<div class="home-ci-row">';
            $closingtag = '';
        } else {
            // second item in a row
            $postclass = "halfwidth second";
            $opentag = '';
            $closingtag = '</div>';
        }
?>
    <?php echo $opentag; ?>
    <div class="main-column-item-wrap <?php echo $postclass; ?>">
    CONTENT OF POST : Title, Thumbnail, Excerpt... etc
    </div><!-- main-column-item-wrap -->
    <?php echo $closingtag; ?>

<?php endwhile; endif; ?>
于 2014-04-19T07:35:17.930 に答える