get_posts()而不是query_posts()用于与自定义分类术语链接的自定义帖子

时间:2010-11-11 23:32:35

标签: php wordpress custom-post-type

我为我的模板构建了2个自定义帖子(消防员和马里奥),我为他们每个人构建了2个分类法(type-mario和术语游戏,类型消防员和术语游戏) 目前我使用query_posts()显示与他们的术语链接的两个帖子的标题,但我喜欢使用get_posts()代替。

<?php query_posts( array( 'type-mario' => 'games', 'showposts' => 10 ) ); ?>
<p>Mario games</p>
<?php while ( have_posts() ) : the_post(); ?>
 <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
 <h2><?php the_title(); ?></h2>
 </div>
<?php endwhile; ?>
<?php wp_reset_query(); ?>


<?php query_posts( array( 'type-firemen' => 'games', 'showposts' => 10 ) ); ?>
<p> Firemen Games </p>
<?php while ( have_posts() ) : the_post(); ?>
 <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
 <h2><?php the_title(); ?></h2>
 </div>
<?php endwhile; ?>
<?php wp_reset_query(); ?>

它运作良好,但我很确定使用get_posts()来显示这2个标题帖更好,但我不知道该怎么做。

PS:请记住,有2个海关帖子,而不是经典帖子,我必须为每个帖子建立一个分类标准,因为这个帖子相同...

感谢您的建议。

这是一个解决方案:

<?php $posts = new WP_Query(array( 
   'taxonomy' => 'type-mario',
   'term' => 'games',
   'posts_per_page' => 10 
)); ?>
<p>Mario games</p>
<?php while ( $posts->have_posts() ) : $posts->the_post(); ?>
  <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <h2><?php the_title(); ?></h2>
  </div>
<?php endwhile; ?>
<?php wp_reset_query(); ?>

1 个答案:

答案 0 :(得分:0)

如果您看过get_posts()上的文档,则其功能类似于query_posts()

两者之间的区别在于,使用query_posts()它将修改全局变量,以便您可以使用“_...”全局函数。

使用get_posts()它将返回一个post对象数组,你可以循环通过它而不会影响当前循环(如果有的话)。此外,您可以遍历多个帖子集。

注意:在WordPress示例中,使用了setup_postdata($post)函数,它将post对象添加为全局,以便您可以使用“the _...”全局函数(但这样做会影响循环)。

注意: get_posts()应使用与query_posts()相同的参数。