カルーセルの場合、論理的に次のように記述できるループを作成する必要があります。
ビジュアル:
< Start Loop #1 >
< Post #1 >
< Post #2 >
< End Loop #1 >
< Start Loop #2 >
< Post #3 >
< Post #4 >
< End Loop #2 >
< Start Loop #3 >
< Post #5 >
< Post #6 >
< End Loop #3 >
理想的には、このようにして無限ループを繰り返すことなく実行できる解決策が欲しいのです。私はWP codexを調べましたが、ここに示されている私のコードに合う特定の解決策を見つけることができませんでした: http://Pastebin.com/LitYb0wh
このような構造でループを機能させるにはどうすればよいですか。
<ul>
<li>
<div>Post 1</div>
<div>Post 2</div>
</li>
<li>
<div>Post 3</div>
<div>Post 4</div>
</li>
<li>
<div>Post 5</div>
<div>Post 6</div>
</li>
</ul>
私は私のポートフォリオでこのコードを使用しています http://pocketapps.co/
<?php $args = array(
//your argument code
);
query_posts($args);?>
<ul>
<?php
$ls=0;
while ( have_posts() ) : the_post();
?>
<?php if($ls%2==0): echo '</li><li>'; endif; ?>
<div class="app">
//your code here
</div>
<?php
$ls++;
endwhile;
wp_reset_query();
?>
</ul>
3つの<ul>
パターンを正確に一致させるために、これを行うことができます。
$my_query = new WP_Query();
$my_query->query($args);
$skip = 2;
echo '<ul>';
while ($my_query->have_posts()) {
$my_query->the_post();
echo '<li>'.$post->post_title.'</li>';
if ( ( ($my_query->current_post-1) % $skip ) == 0) {
break;
}
}
echo '</ul>';
echo '<ul>';
while ($my_query->have_posts()) {
$my_query->the_post();
echo '<li>'.$post->post_title.'</li>';
if ( ( ($my_query->current_post-1) % $skip ) == 0) {
break;
}
}
echo '</ul>';
echo '<ul>';
while ($my_query->have_posts()) {
$my_query->the_post();
echo '<li>'.$post->post_title.'</li>';
if ( ( ($my_query->current_post-1) % $skip ) == 0) {
break;
}
}
echo '</ul>';
しかし、次の例では、クエリのサイズに応じて、小さく、きれいに、そして<ul>
をいくつでも作成する必要があります。これは、「無限ループをこのように」と言った場合の意味です。
$my_query = new WP_Query();
$my_query->query($args);
$skip = 2;
while ($my_query->have_posts()) {
if ( ( ($my_query->current_post-1) % $skip ) == 0) {
echo '<ul>';
}
$my_query->the_post();
echo '<li>'.$post->post_title.'</li>';
if ( ( ($my_query->current_post-1) % $skip ) == 0) {
echo '</ul>';
}
}
単一の<ul>
を使用するオプション
$my_query = new WP_Query();
$my_query->query($args);
$skip = 2;
echo '<ul>';
while ($my_query->have_posts()) {
if ( ( ($my_query->current_post-1) % $skip ) == 0) {
echo '<li>';
}
$my_query->the_post();
echo '<div>'.$post->post_title.'</div>';
if ( ( ($my_query->current_post-1) % $skip ) == 0) {
echo '</li>';
}
}
echo '</ul>';
テストに使用した$args
は...
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'posts_per_page' => 8,
'order' => 'ASC',
);
...しかしこれはあなたが提供するものならどれでもうまくいくはずです。
ループごとに異なる投稿のセットをクエリしたくないと想定しています。
明らかに、私はこれをあなたの既存のコードに組み入れませんでした、しかしパターンは適用するのが簡単であるべきです。