如何为奇数/偶数帖子获取不同的html?

时间:2013-09-06 作者:marco

    query posts
      if posts exist
        then begin the loop
          if post is even: <h1>title</h1><p>content</p>
          if post is odd: <div>its image</div>
这就是我想要得到的,奇数/偶数帖子的不同输出:对于偶数帖子,我们将显示标题和内容,而对于奇数帖子,我们将显示其图像(例如缩略图)。如何获得此结果?

我用这种方式查询帖子

query_posts(\'category_name=category-name\');
那我不知道怎么继续

3 个回复
SO网友:Dave James Miller

你不需要一个新的变量来统计帖子,WordPress已经在$wp_query->current_post.

<?php while (have_posts()): the_post() ?>
    <?php if ($wp_query->current_post % 2 == 0): ?>
        even
    <?php else: ?>
        odd
    <?php endif ?>
<?php endwhile ?>
如果使用自定义WP_Query 如iEmanuele建议的那样$query->current_post 相反

SO网友:iEmanuele

Please don\'t use query_posts();, 使用WP_Query 类别或get_posts(); 相反

要针对循环中的奇数/偶数帖子:

//I will use WP_Query class instance
$args( \'post_type\' => \'recipe\', \'posts_per_page\' => 5 );

//Set up a counter
$counter = 0;

//Preparing the Loop
$query = new WP_Query( $args );

//In while loop counter increments by one $counter++
if( $query->have_posts() ) : while( $query->have_posts() ) : $query->the_post(); $counter++;

    //We are in loop so we can check if counter is odd or even
    if( $counter % 2 == 0 ) : //It\'s even

        the_title(); //Echo the title of post
        the_content(); //Echo the content of the post

    else: //It\'s odd

        if( has_post_thumbnail() ) : //If the post has the post thumbnail, show it
            the_post_thumbnail();
        endif;

    endif;

endwhile; wp_reset_postdata(); endif;
希望有帮助!

SO网友:Pothi Kalimuthu

您可以使用一个新变量来计算帖子的数量,然后在while循环中增加它,然后检查它是奇数还是偶数。下面是来自Blaskan theme\'s循环。显示作者档案的php文件。。。

<?php // Start the loop ?>
<?php while ( have_posts() ) : the_post(); ?>

<?php if ( ( is_archive() || is_author() ) && ( !is_category() && !is_tag() ) ) : // Archives ?>
    <li>
      <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'blaskan\' ), the_title_attribute( \'echo=0\' ) ); ?>"><?php the_title(); ?></a>
      <time datetime="<?php the_date(\'c\'); ?>"><?php print get_the_date(); ?></time>
    </li>
<?php else: // Else ?>
修改后的代码,仅在作者档案中的偶数帖子上显示发布日期。。。

<?php $posts_count = 1; // Start the loop ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php ++$posts_count; ?>

<?php if ( ( is_archive() || is_author() ) && ( !is_category() && !is_tag() ) ) : // Archives ?>
    <li>
      <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'blaskan\' ), the_title_attribute( \'echo=0\' ) ); ?>"><?php the_title(); ?></a>
      <?php if($posts_count % 2): ?> <time datetime="<?php the_date(\'c\'); ?>"><?php print get_the_date(); ?></time> <?php endif; ?>
    </li>
<?php else: // Else ?>

结束