获得自定义分类法时的错误"试图获得非对象的属性"

时间:2016-11-06 10:18:44

标签: php arrays wordpress taxonomy

我在wordpress循环中有以下代码,它应该找到自定义分类法的slug:

$bands_array = get_the_terms($post->ID, 'tcu_song_bands');
$bands = ''; 

foreach( (array)$bands_array as $band ) {
    $bands .=  "band-" . $band->slug . " ";
}

然而,在我的debug.log中,我收到错误"试图获取非对象的属性" (但是,代码正在运行 - 但我试图解决错误)。任何人都可以建议一种不同的方法来获取自定义分类法的标记吗?

以下是使用print_r($ band)

时获得的单个结果
WP_Term Object ( [term_id] => 15 [name] => 5-piece [slug] => 5-piece [term_group] => 0 [term_taxonomy_id] => 15 [taxonomy] => tcu_song_bands [description] => [parent] => 0 [count] => 165 [filter] => raw )

1 个答案:

答案 0 :(得分:0)

get_the_terms可能导致错误状态。该功能的返回可能性很重要。

  

(array | false | WP_Error)成功时WP_Term对象数组,如果没有条件或帖子不存在则为false,失败时为WP_Error。

当你失去对它的可见性时,不要打扰它。

$bands_array = get_the_terms($post->ID, 'tcu_song_bands');
$bands = ''; 

if (is_array($bands_array)) {
    foreach($bands_array as $band) {
        // only interested in bands with a slug
        if (isset($band->slug)) {
            $bands .=  "band-" . $band->slug . " ";
        }
    }
} 
// else log error if it returned a WP_Error, etc.