如何在主循环上获得每个帖子类型的可变数量的帖子?

时间:2012-03-20 作者:Jonathan DS

我正在寻找一种平衡我博客主页内容的方法:

这个博客有一些帖子类型,比如poscast、视频和博客,我想在主页上发布10篇帖子,但我想让其中5篇永远是最新的博客。

制作3个单独的盒子并不能解决我的问题,因为这些帖子是混合在一起的,并且不会总是有那么多其他类型的帖子。

我可以在纯PHP上想出解决方案,但我想知道如何使用wordpress API实现这一点,欢迎提供任何帮助和参考!

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

如果您仍在寻找速度更快的替代方案,这可能会帮助您:

<?php
function customBlogFeed() {

// The Query 
$the_query = new WP_Query( array ( \'post_type\' => array( \'post\', \'page\', \'movie\', \'book\'), \'posts_per_page\' => \'6\' ) );
//Your post_type array is a list of random post_types. You can add whatever you\'d like to match your system.

// The Loop 
while ( $the_query->have_posts() ) : $the_query->the_post(); ?>


  <?php the_title(); ?>
      <?php the_content(); ?>

<?php endwhile;

// Reset Post Data
wp_reset_postdata();
}
?>
然后得到它的输出put<?php customBlogFeed(); ?> 无论您想在哪里输出。

如果你真的想变得花哨,你可以post_limits 过滤并限制每个帖子类型显示的帖子数量。我希望这对你的探索有所帮助。

PS-查看WP_Query, 这真的会帮到你。

经过一些研究后,你可能真的想调查一下post_clauses 用WP3完成这些SQL特征描述。1+语法

SO网友:David

所以,几个月后。我找到了你确切问题的答案:

add_action(\'pre_get_posts\', \'custom_main_query\', 1);
function custom_main_query( $query ) {
  if ( $query->is_main_query() && is_home() ) { 
  //be super careful with this and to be safe, keep the is_home() 
  //bit there, I\'ve had some funny results without it.

    $query->query_vars[\'posts_per_page\'] = 3; //displays 3 posts ;)
    $query->query_vars[\'post_type\'] = array(\'post\'); //and if you wanted multiple cpts <3

    return $query;

    }
}
干杯

结束

相关推荐

Step through wordpress code

我想知道是否有人知道如何为Wordpress设置单步代码。我试过了xdebug 但我没能在我的副总裁身上设置它。我曾一度设法在本地主机上运行它,但与NetBeans结合使用时,它并没有很好地跟踪WP。它要么试图在没有核心WP文件的情况下加载我的页面,要么在我导航到要调试的页面之前就失去了对所发生事情的跟踪。为了配置xdebug安装,我按照http://xdebug.org/find-binary.php 但NetBeans无法与我的远程测试服务器进行通信。对于那些感兴趣的人来说phpinfo() xdeb