我正在做一个项目,我需要显示一个类别中的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个查询?
干杯
乔治
最合适的回答,由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;
(未测试的示例代码)