0

首先,我花了上周的时间将这些代码从很多不同的来源拼凑在一起,如果你从我遇到的例子中可以看出,这是一个真正的科学怪人。我不擅长编写 PHP,但到目前为止已经完成了。任何投入将不胜感激。

我正在做一个项目,我需要从 cat 4 的所有子类别中获取最新的 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
    } 
  } 
} 
?>

在此处链接到我的结果:进行中的实时工作

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

谢谢

4

2 回答 2

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

....比您的代码原样...

于 2013-02-20T06:04:29.103 回答
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);

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

于 2013-02-20T06:39:00.603 回答