首先,我花了最后一周加上将这些代码放在一起来自不同的来源,一个名副其实的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
此代码在每个类别中随机化结果,但按类别显示它们。 我希望我已经足够清楚看似简单的修复了。
由于
答案 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);
我希望这将是一个更有效的解决方案。我还没有测试过。