我的最终代码如下所示:
<?php
$parent = get_cat_ID("photos");
$cats = get_categories("child_of=".$parent);
foreach ($cats as $cat) {
query_posts("posts_per_page=1&orderby=rand&cat=".$cat->cat_ID);
?>
<?php if ($parent == true && have_posts()) : while (have_posts()) : the_post(); ?>
<ul>
<?php if (has_post_thumbnail()) { ?>
<?php
printf( \'<li><a href="\'.get_category_link($cat->cat_ID).\'">\'.get_the_post_thumbnail(get_the_ID(), "album-thumb").\'</a><a href="\'.get_category_link($cat->term_id).\'">%s</a></li>\',
apply_filters(\'get_term\', $cat->name));
?>
<?php } ?>
</ul>
<?php endwhile; endif; } ?>
<?php if (! $parent == true || ! $cat == true) { ?>
<p><?php _e("Sorry, no posts matched your criteria."); ?></p>
<?php } ?>
<?php wp_reset_query(); ?>
基本上,在这个版本中,有两件事发生了变化:
我更改了if
为了确保父类别存在并且我们有帖子,如果这两个条件都满足,那么它将显示我的内容。。。如果没有,它什么也不做。
自从else
我写了我自己的。。。上面说。。。如果父类别或子类别不存在,则显示我的错误消息。。。如果是这样,那就什么都不做。
我不知道为什么else不起作用,但我猜是因为foreach
这是这个循环中唯一不同的地方,这在大多数其他循环中都没有。
希望这对其他人有帮助:)
谢谢迈克的帮助!!
*P、 我将把你的解决方案作为答案,因为它确实回答了我最初的问题:)
乔希