Loop inside the loop

时间:2011-05-18 作者:Mamaduka

我正在做一个项目,我需要显示一个类别中的2篇文章,还需要在这篇文章之间设置另一个循环,以显示其他类别中的随机文章列表。最简单的方法是创建3个查询,但当我为一个类别创建2个查询时,出现了一个问题,一个循环中断并显示两个帖子,第二个很好。我在第二次查询中使用了offset参数,但它不起作用。

<?php

        $first_query_args = array(
          \'category_name\' => \'first-category\',
          \'tag\' => \'special-tag\',
          \'post_per_page\' => 1,
        );

        $first_query = new WP_Query( $first_query_args );

        if ( $first_query->have_posts() ) : while ( $first_query->have_posts() ) : $first_query->the_post();

        // First query stuff goes here

        endwhile; endif;

        wp_reset_query(); 

        // Query for Random posts
        $query_for_random_args = array(
            \'category_name\' => \'cat-for-rand\',
            \'post_per_page\' => 3,
            \'orderby\' => \'rand\',
        );

        $query_for_random = new WP_Query( $query_for_random_args );

        if ( $query_for_random->have_posts() ) :
    ?>

        <ul>

        <?php while ( $query_for_random->have_posts() ) : $query_for_random->the_post(); ?>

            <li>
                <?php if ( has_post_thumbnail() ) { ?>
                    <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail( \'list-image\' ); ?></a>
                    <a href="<?php the_permalink(); ?>" ><?php the_title(); ?></a>
            </li>

        <?php } endwhile; ?>

        </ul>

        <?php endif; wp_reset_query(); ?>

    <?php


        $second_query_args = array(
          \'category_name\' => \'first-category\',
          \'tag\' => \'special-tag\',
          \'offset\' => 1,
          \'post_per_page\' => 1,
        );

        $second_query = new WP_Query( $second_query_args );

        if ( $second->have_posts() ) : while ( $second_query->have_posts() ) : $second_query->the_post();

        // Second query stuff goes here

        endwhile; endif;
?>
(此代码是我用于这些循环的代码)

有什么办法可以解决这个问题吗?或者,如何对类似的任务使用2个查询?

干杯

乔治

1 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

我会使用get_posts() 用于您的两个临时循环。(实际上,如果要修改主循环以便只检索2篇文章,则只需要一个临时循环。)e、 g。

\\\\ code modify main Loop to return only 2 posts goes here

$firstpost = true;

if ( have_posts() ) : while ( have_posts() ) : the_post();

    \\\\ main Loop Post output goes here

    if ( $firstpost ) {

        $randomposts = get_posts( array( \'category\' => $categoryid, \'numberposts\' = $numberposts, \'orderby\' => \'rand\' );

        \\\\ Output ad-hod Loop content, e.g.
        ?>
        <ul>
        <?php
        foreach ( $randomposts as $randompost ) { ?>
            <li><a href="<?php echo get_permalink( $randompost->ID ); ?>"><?php echo $randompost->post_title; ?></a></li>
        <?php } ?>
        </ul>
    <?php }

   $firstpost = false;

// end the main Loop
endwhile; endif;
(未测试的示例代码)

结束

相关推荐

Breaking the loop?

WP循环被广泛用于打印Wordpress中的帖子列表:<?php $loop = new WP_Query( array( \'post_type\' => \'ff\', \'ff\' => \'show_ff\', \'orderby\' => \'menu_order\', \'order\' => \'ASC\' )); while ( $loop->have_posts() ) : $loop->the_post(); ?> &#