随机化帖子。按升序跳过第一个帖子

时间:2014-02-17 作者:DavidVII

我想随机化一组帖子(自定义帖子类型),但同时忽略第一篇帖子。

以下是我认为可行的代码:

$featured_content_query = new WP_Query( array(
  \'post_type\'       => \'feature\',
  \'offset\'          => 1,
  \'posts_per_page\'  => 10,
  \'order\'           => \'ASC\',
  \'orderby\'         => \'rand\'
) );
没有orderby 我想跳过的帖子会被忽略,但只要我添加了随机顺序,它就会将其添加回混合中。

有人知道我做错了什么吗?我觉得我错过了一些非常明显的东西。

Thnx!

2 个回复
SO网友:sri

我相信有不同的方法来实现这一点。我能想象的最简单的方式如下:

$featured_content_query = new WP_Query( array(
  \'post_type\'       => \'feature\',
  \'offset\'          => 1,
  \'posts_per_page\'  => 10,
  \'order\'           => \'ASC\'
 ) );

shuffle( $featured_content_query );    //PHP function to randomise posts array
然后您可以继续使用$featured_content_query 像往常一样!

SO网友:dylanjameswagner

我在寻找另一个答案,但无意中发现了这个问题,我想我能帮上忙。

如果您希望排除最近的帖子,您可以使用wp_get_recent_posts() 检索ID,然后使用\'post__not_in\' => array(#,#) 在您的WP\\u查询中,排除那些重新发送的帖子。

对此进行了一点测试,发现这有助于排除一个帖子。我认为如果您愿意的话,您可以对结果进行不同的分析,以获得不仅仅是ID上的结果。

$recent = wp_get_recent_posts(array(\'post_type\'=>$type,\'numberposts\'=>\'1\'));
$recentID[] = $recent[0][\'ID\']; // this creates an array of one

$args = array(
     \'post_type\'        => $type
    ,\'post_staus\'       => \'publish\'
    ,\'post__not_in\'     => $recentID // array()

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post