【wordpress】n件ごとに要素で囲う処理

電脳備忘録

2記事ごとに要素で囲う処理をする必要があり、調べていろいろいじくった結果下記のような感じで実装できました。

ランダムに出力された10記事を2件ごとにdivで加工処理です。「 $post_count % 2」の数字を変更することで囲いたい記事数を調整できるようです。

これから使う機会もありそうなので備忘録として残しておきます。

<?php
$args = Array(
'post_type' => 'post',
'post_status' => 'publish',
'category_name' => 'diary',
'orderby'   => 'rand',
'posts_per_page' => 10
);?>
<?php $array = []; ?>
<?php $query = new WP_Query($args); ?>
<?php if ($query->have_posts()) : while ($query->have_posts()) : $query->the_post(); ?>
<?php $array[] = get_post($post->ID); ?>
<?php $postids[] = get_the_ID(); ?>
<?php endwhile; endif; ?>
<?php mt_shuffle($array); ;?>
<?php $array = array_slice($array, 0, 10); //10件ランダムで表示?>
<?php $post_count = 1; // カウンター初期化
echo '<div class="entry">' . "\n"; // 最初の開始タグを出力
?>
<?php foreach ($array as $post) : ?>
<?php
if ( $post_count % 2 == 1 && $post_count != 1 ) { echo '</div><!--/.entry-unit-->' . "\n" . '<div class="entry-unit">' . "\n"; } // 2で割った余りが1及び最初のdivでなければ閉じdivと次の開始divタグを出力
?>
//ここに繰り返す要素を記述する
<?php $post_count++; // カウンターを+1 ?>
<?php endforeach; ?>
<?php echo '</div>' . "\n"; // 最後に閉じる ?>

本来であれば参考サイトを掲載するのですが、失念してしまいました・・・。

広告

ブログの維持費に充てるでございます・・・。