web-dev-qa-db-ja.com

get_termsのfalseブール値のforeachエラー

私は定期的に使用する別の関数で作成されたページIDの配列をつかみます - それはすべて良いことです。私が抱えている問題は以下の機能にあります。一部のページには、利子分類法のオプションから「利子」が割り当てられていません。そのため、$ terms配列には、単語のないページからの誤った論理値がいくつかあります。 foreachがこれらの偽のブール値にぶつかると、phpエラーが画面に表示されますが、ループは実行を続け、他のすべての方法で期待通りに機能します。このエラーが表示されないようにするにはどうすればよいですか。私は偽のブール値のためにある種のエラーキャッチャーが必要ですが、それをどうやって実行するかはわかりません。何かアドバイスは大歓迎です!

foreach ($campids as $campid){
            $terms = get_the_terms($campid, 'interests');

            foreach($terms as $term){
                $camp_int = $term->name;

                if ($camp_int == $interest){ // include only camps with the correct location
                    $camps[$i]['id']=$campid;
                    $camps[$i]['interest']=$camp_int;
                }
            }
            $i++;
        }
3
campatsky

あなたが必要としているのは、Codexからはかなりまっすぐです。

$terms = get_the_terms( $post->ID, 'on-draught' );

if ( $terms && ! is_wp_error( $terms ) ) : 

    $draught_links = array();

    foreach ( $terms as $term ) {
        $draught_links[] = $term->name;
    }

get_the_terms()は、termオブジェクト、false、またはWP_Errorオブジェクトを返すことができますfalseもエラーオブジェクトもチェックしていません。それがこの条件式がすることです。

if ( $terms && ! is_wp_error( $terms ) ) 

if(is_array($terms)){の代わりにそれを使ってください

2
s_ha_dum