1

これが私が達成しようとしていることです:

奇数の投稿と偶数の投稿の親ラッパーが異なるかどうかに応じて、異なる投稿を出力したいと考えています。たとえば、偶数の投稿はクラス の親にevenWrapper出力され、奇数の投稿はクラス の親に出力されoddWrapperます。

modulus演算子を使用する背後にある全体的な理論を理解しました。私が立ち往生しているのは、実際には偶数または奇数の投稿を別の親ラッパーでラップすることです。これが私がこれまでに持っているものです:

<?php if ( have_posts() ):
$c = 0;
?>


<div class="six columns alpha">

<?php 
while ( have_posts() ) : the_post();

    if($c % 2 == 0) : ?>

        <?php /* posts with even numbers are outputted here */ ?>

<?php   
    endif;
$c++;
endwhile;

?>

</div>

<?php endif; ?>

上記のコードは、偶数の投稿を出力する場合にうまく機能します。ご覧のとおり、親ラッパーはwhileループの周りにあり、演算子ifを使用したステートメントでチェックします。modulus私の最初の推測は、elseステートメントを作成し、それらが偶数でない場合は別の親をラップすることです。しかし、whileループに引っ掛かり、毎回親ラッパーを出力するという問題に遭遇します。

ここから投稿を別の親コンテナに出力するにはどうすればよいですか?? 別のwhileループを作成する必要がありますか?

4

3 に答える 3

1

私は WordPress API の速度に完全に追いついていないため、投稿の詳細を取得するためのより良い方法がある場合とない場合がありますが、これは関係なく機能するはずです。

<?php
    $oddPosts = array();
    $evenPosts = array();
    $i = 0;
?>
<?while(have_posts()) : the_post()?>
<?
    $post = the_content(); // etc...
    if(++$i % 2 == 0) {
        array_push($evenPosts, $post);
    } else {
        array_push($oddPosts, $post);
    }
?>
<?endwhile;?>

<div class="wrapper odd">
    <?foreach($oddPosts as $post):?>
        <?= $post ?>
    <?endforeach?>
</div>
<div class="wrapper even">
    <?foreach($evenPosts as $post):?>
        <?= $post ?>
    <?endforeach?>
</div>
于 2012-06-07T08:59:46.163 に答える
0

実際、それは本当に簡単です。はい、あなたにもelse声明が必要です。次に例を示します。

<?php if ($c % 2 === 0): ?>
<div class="evenWrapper">
<?php else: ?>
<div class="oddWrapper">
<?php endif; ?>
...
</div>

次のようなこともできます。

<?php
$class = $c % 2 === 0 ? 'evenWrapper' : 'oddWrapper';
?>
<div class="<?php echo $class; ?>">
</div>
于 2012-06-07T01:59:14.667 に答える
0

$wp_query->current_post を使用して、投稿の現在のインデックス位置を取得するだけです:

<?php if (($wp_query->current_post) % 2) $class="evenWrapper"; else $class="oddWrapper"; ?>

<article <?php post_class($class); ?>>
 ...content here ...
</article>
于 2013-09-26T15:45:10.923 に答える