将Query_Posts()和Get_Posts()组合为一个查询

时间:2013-01-19 作者:Paul Elliot

我正在创建一个网站,它使用博客的普通帖子和事件的自定义帖子类型(由事件插件生成)。我成功地使用了不同的查询来获取这两个查询,但我想将它们合并到一个查询中。尝试过各种各样的事情,但都没有成功。

以下是对博客的查询:

<?php $mainFeatures = array( \'numberposts\' => -1, \'order\'=> \'DESC\', \'orderby\' => \'post_date\');
 $postslist = get_posts( $mainFeatures );
 foreach ($postslist as $post) :  setup_postdata($post); ?>            
      <!-- stuff from post-->
 <?php endforeach; ?>
以下是事件查询:

 <?php query_posts(array(\'post_type\'=>array(TribeEvents::POSTTYPE), \'numberposts\' => -1,\'order\' => \'ASC\')); ?>
 <?php while (have_posts()) : the_post(); ?>
      <!-- stuff from post-->
 <?php endwhile;?>
已尝试此操作,但再次仅获取事件:

 <?php $tryone = query_posts(array(\'post_type\'=>post, \'posts_per_page\'=> 18)); ?>
 <?php $trytwo = query_posts(array(\'post_type\'=>array(TribeEvents::POSTTYPE))); ?>
 <?php $all_posts = array_merge( $tryone, $trytwo ); ?>

 <?php query_posts($all_posts); ?>
 <?php while (have_posts()) : the_post(); ?>
 <p>stuff</p>
 <?php endwhile;?>

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

我认为你用错了post_type 对于常规职位。

$args = array(\'post_type\'=>array(\'post\', TribeEvents::POSTTYPE));  

// The Query
$the_query = new WP_Query( $args );

// The Loop
while ( $the_query->have_posts() ) :
    $the_query->the_post();
    echo \'<li>\' . get_the_title() . \'</li>\';
endwhile;

// Restore original Post Data
wp_reset_postdata();

结束

相关推荐