每个<li>内2<div>的特定循环

时间:2013-04-23 作者:user31940

我需要为旋转木马创建一个逻辑上可以描述为以下内容的循环:需求:

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>

2 个回复
SO网友:Ravi Patel

我在我的投资组合中使用此代码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>

SO网友:s_ha_dum

精确匹配你的三个<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>s取决于查询的大小,我假设这就是您所说的“以这种方式无限循环”的意思。

$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>\';
The$args 我过去测试的是。。。

$args = array(
  \'post_type\' => \'post\',
  \'post_status\' => \'publish\',
  \'posts_per_page\' => 8,
  \'order\' => \'ASC\',
);
。。。但这应该适用于您提供的任何产品。

它确实假设您不想为每个循环查询一组不同的帖子。

显然,我并没有将其应用到您现有的代码中,但该模式应该很容易应用。

结束

相关推荐

ARRAY_REPLACE抛出php_warning,但仍在工作

您好,我有一个问题可能比WordPress更像PHP问题,但在WordPress上下文中可能会很有趣,以防有人想向WP对象添加属性。我创建了一个自定义分类法,并使用一个选项为每个术语添加顺序。为了获得主题中的顺序,我使用了这两个函数:第一个函数检索术语,然后对它们进行排序: // SORT BY ORDER function cmp( $a, $b ) { if( $a->order == $b->order ){ return 0 ; }