0

我正在使用 query_posts 从使用 orderby=rand 的自定义帖子类型返回 6 个随机帖子。

这工作正常。然而。查询返回帖子后,我需要按数字顺序对它们进行排序。

我正在使用的当前代码如下所示:

<?php query_posts('post_type=my_post_type&orderby=rand&showposts=6'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

Do stuff

<?php endwhile; else: ?>
<?php endif; ?>

所以我需要随机选择 6 个帖子,然后将它们按数字顺序排序。任何帮助将不胜感激!

4

1 回答 1

0

为您提供一些元代码,实际上要使其正常工作将需要您进行一些挖掘,但这有望走上正确的轨道。

这里的一般想法是,您只需要从 query_posts 获取 id,然后重新排序它们,允许您根据需要输出它们。

<?php 
    query_posts('post_type=my_post_type&orderby=rand&showposts=6'); 

    // Create your result array
    $postArray = array();

    if ( have_posts() ) : while ( have_posts() ) : the_post(); 

        $postArray[] = /*POST ID GOES HERE*/

    endwhile; else:
    endif;

    // Now sort it
    sort($postArray,SORT_NUMERIC);

    // Now iterate over $postArray outputting post id $postArray[0] -> $postArray[n]

?>

另一种选择可能是填充 $postArray ,$postArray[/*POST ID*/] = /* OUTPUT */;然后只迭代 $postArray ,因为如果使用数字键,PHP 可能应该自动对其进行排序。

于 2013-03-26T13:56:35.367 回答