Checking return with WP Error

时间:2013-02-05 作者:JMB

我见过其他有类似问题的人,我知道在我的自定义分类法“hhie\\u艺术家”中调用子项时,我需要检查返回。我不知道该怎么做echo 我要合并的输出wp_error.这是我的代码:

<?php
$taxonomyName = "hhie_artists";
//Call top layer terms only (by setting Parent to 0).
$parent_terms = get_terms($taxonomyName, array(\'parent\' => 0, \'orderby\' => \'slug\', \'hide_empty\' => true));   
echo \'<ul>\';
foreach ($parent_terms as $pterm) {
//Get the Child terms
$terms = get_terms($taxonomyName, array(\'parent\' => $pterm->term_id, \'orderby\' => \'slug\', \'hide_empty\' => true));
foreach ($terms as $term) {
echo \'<li><a href="\' . get_term_link( $term->name, $taxonomyName ) . \'">\' . $term->name . \'</a></li>\';  
}
}
echo \'</ul>\';
?>
据我所知,这是由于发现了一个空的分类字段。我还没有填充所有自定义分类字段,所以我对这个错误并不感到惊讶,我只需要解决它。谢谢

1 个回复
SO网友:Simon

不完全确定您在问什么,但如果我理解正确,您希望对返回值执行一些测试,以避免重复WP_Error 对象,并可能以某种方式处理错误。

根据documentation get_terms() 将返回术语对象数组或false 如果没有找到对象,但通过查看源,如果分类法不存在或在某些情况下为空数组,它将返回一个WP\\u错误对象。

因此,要检查错误,必须检查返回值是否匹配false, 空数组(array()) 或aWP_Error 对象使命感empty($terms) 将解释前两个,以及is_wp_error($terms) 可用于测试返回值是否为错误对象。执行此类测试时,可以使用类似的方法:

$taxonomyName = "hhie_artists";
//Call top layer terms only (by setting Parent to 0).
$parent_terms = get_terms($taxonomyName, array(\'parent\' => 0, \'orderby\' => \'slug\', \'hide_empty\' => true));   

if (!empty($parent_terms) && !is_wp_error($parent_terms)) {
    echo \'<ul>\';
    foreach ($parent_terms as $pterm) {
        //Get the Child terms
        $terms = get_terms($taxonomyName, array(\'parent\' => $pterm->term_id, \'orderby\' => \'slug\', \'hide_empty\' => true));
        if (!empty($terms) && !is_wp_error($terms)) {
            foreach ($terms as $term) {
                echo \'<li><a href="\' . get_term_link( $term->name, $taxonomyName ) . \'">\' . $term->name . \'</a></li>\';  
            }
        }
    }
    echo \'</ul>\';
}
然而,WordPress中已经有一个功能可用于打印这样的类别树。它叫wp_list_categories 我强烈建议你用它来代替。方法如下:

wp_list_categories(array(
    \'title_li\' => null, // We don\'t need the automatically generated heading
    \'depth\' => 1, // Judging from your code you only want to print one level of terms
    \'orderby\' => \'slug\',
    \'taxonomy\' => \'hhie_artists\',
));
结果应遵循以下结构:

母艺人A子艺人A1子艺人A2子艺人A3子艺人B子艺人B1子艺人B2子艺人

结束

相关推荐