IF is_array 没有按预期工作 wordpress child 类别
IF is_array not working as expected wordpress child categories
此代码工作正常并且 return 是数组中的 sub-categories,如果没有任何子类别,则不会 return 结果,
$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 数组之后插入一个 header,它 returns header 是否存在 sub-category 即:
$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;
?>
我用计数解决了它,但对我来说它看起来很笨拙,如果是数组它应该可以工作。
<?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;
?>
如评论中所述,问题不是 is_array()
不起作用,问题是您没有测试数组是否有任何行。
你的方法很好。没有不需要执行代码的方法。如果我这样做,我可能会像这样短路 IF 语句:
if (is_array($childCats) and count($childCats)>0) {
...
}
这样你就跳过了报头和 foreach 的麻烦 - 现在正在命中而不是执行,因为数组是空的。
HTH,
=C=
此代码工作正常并且 return 是数组中的 sub-categories,如果没有任何子类别,则不会 return 结果,
$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 数组之后插入一个 header,它 returns header 是否存在 sub-category 即:
$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;
?>
我用计数解决了它,但对我来说它看起来很笨拙,如果是数组它应该可以工作。
<?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;
?>
如评论中所述,问题不是 is_array()
不起作用,问题是您没有测试数组是否有任何行。
你的方法很好。没有不需要执行代码的方法。如果我这样做,我可能会像这样短路 IF 语句:
if (is_array($childCats) and count($childCats)>0) {
...
}
这样你就跳过了报头和 foreach 的麻烦 - 现在正在命中而不是执行,因为数组是空的。
HTH,
=C=