web-dev-qa-db-ja.com

各<li>内の2つの<div>に対する特定のループ

カルーセルの場合、論理的に次のように記述できるループを作成する必要があります。

  • 3ループ
  • ループあたり2投稿
  • 重複なし
  • 投稿日順

ビジュアル:

< 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>
1
user31940

私は私のポートフォリオでこのコードを使用しています http://pocketapps.co/

enter image description here

<?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>
1
ravi patel

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',
);

...しかしこれはあなたが提供するものならどれでもうまくいくはずです。

ループごとに異なる投稿のセットをクエリしたくないと想定しています。

明らかに、私はこれをあなたの既存のコードに組み入れませんでした、しかしパターンは適用するのが簡単であるべきです。

0
s_ha_dum