Inserting random posts

时间:2013-07-15 作者:user537137

我想在滑块中添加两个自定义帖子类型,一个是事件,另一个是核心值,但我想添加所有事件,并随机插入7个核心值中的2或3个。

我已经设置了这个查询,它显然只是要插入所有事件和所有核心值。我有点困惑于如何让它的随机部分发生。我不希望使用post-ID来选择随机值,因为post-ID在将来可能会改变。

有什么想法吗??

  $the_query = new WP_Query( array(     \'post_type\' => array( \'core-value\', \'event\' )) );           
  while ( $the_query->have_posts() ) : $the_query->the_post(); 

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

在一个查询中组合两种不同的自定义帖子类型,并且仍然能够控制要显示的每种类型帖子的数量,这可能有点棘手。如果一个查询与post\\u type=数组(\'type1\',\'type2\',…)一起使用,您必须将posts\\u per\\u page设置为相当高的数字。我觉得这是肮脏和糟糕的:)

因此,您可以使用两种不同的wp\\U查询,并可以单独控制每种类型显示的帖子数量。但是,单个查询的结果必须“合并”并一起显示,而不是一个接一个地显示。因此,接下来需要使用对象缓冲,我听说这也是不好的!!:)

总之,下面是使用第二种方法的代码:

<?php 
$output = array();

//first query to retrieve cpt core-value
$cv_query = new WP_Query( 
    array( 
        \'post_type\' => \'core-value\',
        //\'posts_per_page\'  => -1, this is a bad approach, you sure you want to display ALL core-values ?
    )
);
if( $cv_query->have_posts() ):
    while ( $cv_query->have_posts() ) : $cv_query->the_post(); 
    ob_start();
        ?>
        <div id=\'post-<?php the_ID();?>\' <?php post_class( \'slider\' );?> >
            <?php the_title();?>
            <?php the_post_thumbnail();?>
            <?php 
            /* and all other details of the post you want */
            ?>
        </div>
        <?php 
    $output[] = ob_get_contents();
    ob_end_clean();
    endwhile;
endif;
wp_reset_postdata();

//another wp_query to retrieve cpt events
$event_query = new WP_Query( 
    array( 
        \'post_type\'         => \'event\',
        \'posts_per_page\'    => 3
    )
);
if( $event_query->have_posts() ):
    while ( $event_query->have_posts() ) : $event_query->the_post(); 
    ob_start();
        ?>
        <div id=\'post-<?php the_ID();?>\' <?php post_class( \'slider\' );?> >
            <?php the_title();?>
            <?php the_post_thumbnail();?>
            <?php 
            /* and all other details of the post you want */
            ?>
        </div>
        <?php 
    $output[] = ob_get_contents();
    ob_end_clean();
    endwhile;
endif;
wp_reset_postdata();

if( $output ){
    //shuffle the array to randomize it
    shuffle($output);

    //now finally echo them
    foreach ($output as $postdata) {
        echo $postdata;
    }
}
?> 

结束

相关推荐

页面不会使用LOOP或PRE_GET_POST显示在首页上

我改变了主题,以我认为“合适”的方式工作。在阅读了抄本并在这个网站上看到了一些东西之后。我从头开始。加载了2012主题。写了两页。主页和博客。我将主页设置为默认的2012年首页。php模板。然后在“设置->阅读”中,我将静态首页设置为主页,将贴子页面设置为博客。我知道这些帖子将从索引中删除。因此,在该文件中,我将自定义循环从博客类别和我的头版页面中拉出来。php文件我放置了一个自定义循环来获取页面。 $args = array( \'post_type\' => \'page\