循环后数组的随机结果

时间:2013-02-20 05:44:05

标签: arrays wordpress loops random shuffle

首先,我花了最后一周加上将这些代码放在一起来自不同的来源,一个名副其实的frankenstein,如果你能从我遇到过的例子中找到。我不擅长编写PHP,但到目前为止已经做了。任何投入将不胜感激。

我正在开展一个项目,我需要从cat 4的所有Child类别中获取最新的10个结果,之后我希望随机化结果并显示。我见过很多使用 shuffle(); 函数的例子,但是在正确实现它时遇到了问题。

这是我的代码:

<?php

$categories = get_categories( 'child_of=4' );
  foreach($categories as $category) {
  $args=array(
  'showposts' => 10,
  'category__in' => array($category->term_id),
  'caller_get_posts'=>1
);
$posts=get_posts($args);
  shuffle($posts);
  if ($posts) {
    foreach($posts as $post) {
      setup_postdata($post); ?>
        <div <?php post_class('boxy');?>>
      <a href="<?php the_permalink() ?>"><?php  the_post_thumbnail(); ?></a>

    <?php the_content(''); ?>
    </div>
      <?php
    } 
  } 
} 
?>

在此处链接到我的搜索结果:Live work in progress

此代码在每个类别中随机化结果,但按类别显示它们。 我希望我已经足够清楚看似简单的修复了。

由于

2 个答案:

答案 0 :(得分:1)

您需要首先使用您拥有的所有类别制作所有帖子的数组。比你需要洗牌一样。试试这个,

 $posts = array();
 $categories = get_categories( 'child_of=4' );
 foreach($categories as $category) {
   $args=array(
    'showposts' => 10,
    'category__in' => array($category->term_id),
    'caller_get_posts'=>1
   );
 $posts = $posts + get_posts($args);
} // Close your foreach here

....比你的代码还要......

答案 1 :(得分:0)

$categories = get_categories( 'child_of=4' );
$cats = array();
foreach($categories as $category) {
   $cats[] = $category->term_id;
}

$args=array(
  'showposts' => 10,
  'category__in' => $cats,
  'orderby' => 'rand',
  'caller_get_posts'=>1
);
$posts=get_posts($args);

我希望这将是一个更有效的解决方案。我还没有测试过。