此代码工作正常并返回数组中的子类别,如果没有任何子类别,则不返回结果,
$parentCatName = single_cat_title('',false);
$parentCatID = get_cat_ID($parentCatName);
$childCats = get_categories( 'child_of='.$parentCatID );
if(is_array($childCats)):
foreach($childCats as $child){ ?>
<?php query_posts('cat='.$child->term_id . '&posts_per_page=1');
while(have_posts()): the_post(); $do_not_duplicate = $post->ID; ?>
<!-- POST CODE -->
<?php get_template_part( 'content', 'thumbs' ); ?>
<!-- END POST CODE -->
<?php
endwhile;
wp_reset_query();
}
endif;
?>
但是如果我尝试在if is数组后面插入一个标题,它会返回标题,无论是否有子类别,即:
$parentCatName = single_cat_title('',false);
$parentCatID = get_cat_ID($parentCatName);
$childCats = get_categories( 'child_of='.$parentCatID );
if(is_array($childCats)):
echo 'Sub-Categories:' ;
foreach($childCats as $child){ ?>
<?php query_posts('cat='.$child->term_id . '&posts_per_page=1');
while(have_posts()): the_post(); $do_not_duplicate = $post->ID; ?>
<!-- POST CODE -->
<?php get_template_part( 'content', 'thumbs' ); ?>
<!-- END POST CODE -->
<?php
endwhile;
wp_reset_query();
}
endif;
?>
我通过使用count解决了它,但它对我来说似乎很笨拙,并且它应该与if一起工作。
<?php
$parentCatName = single_cat_title('',false);
$parentCatID = get_cat_ID($parentCatName);
$childCats = get_categories( 'child_of='.$parentCatID );
$countChild = count($childCats);
if ($countChild > 0) : echo '<h2>Sub-Categories:</h2>'; endif;
if(is_array($childCats)):
foreach($childCats as $child){ ?>
<?php query_posts('cat='.$child->term_id . '&posts_per_page=1');
while(have_posts()): the_post(); $do_not_duplicate = $post->ID; ?>
<!-- POST CODE -->
<?php get_template_part( 'content', 'thumbs' ); ?>
<!-- END POST CODE -->
<?php
endwhile;
wp_reset_query();
}
endif;
?>
答案 0 :(得分:1)
如评论中所述,问题不在于is_array()
不起作用,问题是您没有测试数组是否有任何行。
你这样做的方式很好。没有办法不需要执行代码。如果我这样做,我可能会像这样短路IF语句:
if (is_array($childCats) and count($childCats)>0) {
...
}
这样你就可以跳过回显标题和foreach的麻烦 - 现在正在点击而不是执行因为数组是空的。
HTH,
= C =