web-dev-qa-db-fra.com

erreur foreach sur un faux booléen de get_terms

Je récupère un tableau d'identifiants de pages créés dans une autre fonction que j'utilise régulièrement - c'est très bien. Le problème que j'ai est dans la fonction ci-dessous. Certaines pages ne se sont pas vu attribuer un "intérêt" parmi les options de la taxonomie des intérêts. Par conséquent, le tableau $ terms contient des faux booléens des pages sans termes. Lorsque le foreach rencontre ces faux booléens, une erreur php apparaît à l'écran, bien que la boucle continue à s'exécuter et fonctionne comme prévu de toutes les manières. Comment puis-je empêcher cette erreur d'apparaître? J'ai besoin d'une sorte d'attrape-erreur pour les faux booléens mais je ne sais pas comment s'y prendre. Tout conseil est fort apprécié!

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

Ce dont vous avez besoin est à peu près tout droit sorti du 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() PEUT RENVOYER UN OBJET TERM, false OU UN OBJET WP_Error . Vous ne recherchez ni la variable false ni l'objet d'erreur. C'est ce que fait ce conditionnel:

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

Utilisez-le au lieu de if(is_array($terms)){

2
s_ha_dum