Renegade Renegade - 3 months ago 24
PHP Question

Wordpress foreach invalid argument

Hoping someone can help me with this code. This code outputs the tax as a class for my isotope filte/items. It works fine on localhost but once uploaded it still works but creates the following error:

*Warning: Invalid argument supplied for foreach() in /path-to-file.php on line #
*

<?php while ( $the_query->have_posts() ) : $the_query->the_post();
$termsArray = get_the_terms( $post->ID, "print_type" ); //Get terms for item
$termsString = ""; //initialize string that will contain the terms
foreach ( $termsArray as $term ) { // for each term
$termsString .= $term->slug.' '; //create a string that has all the slugs
}
?>
<div class="<?php echo $termsString; ?>">
</div>
<?php endwhile; ?>

Answer

*Warning: Invalid argument supplied for foreach() in /path-to-file.php on line # *

This warning is given when you feed a foreach loop with data that is not an array neither an object. Just adding an if condition to check for the same would work fine.

<?php
while ( $the_query->have_posts() ):
    $the_query->the_post(); 
    $termsArray  = get_the_terms( get_the_ID(), "print_type" );  //Get terms for item
    $termsString = ""; //initialize string that will contain the terms

    // Only use foreach for a array or object.
    if( is_array($termsArray) ){
        foreach ( $termsArray as $term ) { // for each term 
            $termsString .= $term->slug.' '; //create a string that has all the slugs 
        }
    }
?>

<div class="<?php echo $termsString; ?>">
</div>

<?php endwhile; ?>