如果get_the_category()未返回任何结果,请隐藏

时间:2014-07-06 03:52:23

标签: php wordpress

我根据类别列出相关网页。这就是我用来列出所有相关类别的内容。我想要做的是隐藏整个区块,如果它没有返回任何类别。我不确定如何用foreach做到这一点。

<h3>Related Category</h3>
<ul>
<?php foreach((get_the_category()) as $catCS) { 
    if($catCS->parent == 4){ ?> 
        <li><a href="<?php echo get_permalink(46); ?><?php echo $catCS->slug; ?>"><?php echo $catCS->cat_name; ?></a></li>  
<?php }
    } ?>
</ul>

1 个答案:

答案 0 :(得分:1)

不确定你是否知道,但WordPress有一个命令来获取父类别get_category_parents,所以如果你使用它,你可以像这样使用它:

<?php
$result = get_category_parents($cat, true, '</li><li>');
$result = substr($result, 0, -4);
if(!is_wp_error($result))
{
?>
    <h3>Related Category</h3>
    <ul>
        <li><?php echo $result; ?>
    </ul>
<?php
}
?>

注意:由于我使用substr作为分隔符的方式,<li>是删除最后一个空</li><li>开头的小黑客。


这是未经测试的,但您可以将当前数组过滤到结果数组中,并测试它是否为空。

<?php
# save the result
$categories = array();
# fill $categories if any match
foreach ((get_the_category()) as $cat)
{
    if($cat->parent == 4)
    {
        $categories[] = $cat;
    }
}

# print nothing if $categories is empty
if (!empty($categories))
{
?>
<h3>Related Category</h3>
<ul>
<?php
foreach($categories as $catCS)
{
?>
    <li><a href="<?php echo get_permalink(46); ?><?php echo $catCS->slug; ?>"><?php echo $catCS->cat_name; ?></a></li>  
<?php
}
?>
</ul>
<?php
}
?>

可能有更好的方法,但这应该有用。