If attribute value equals to… show something

I’m working on something on wordpress + woocommerce.
I’ve inputed some ‘filter’ attributes value for some products.

So if the value of the attribute for this product includes a “Wood Grains” value, i want to echo an Woodgrains.jpg on the front end.

Read More

Therefore if the value = Texture, i want to echo Texture.jpg icon.

the code below is what i’ve mustered so far, but this only echoes out all the values tagged to a product, i can’t figure out what to change to get the ‘if’ statement in it.

$terms = get_the_terms( $product->id, 'pa_filter');
foreach ( $terms as $term ) {
echo $term->name;
}

here’s a screenshot of what the code above does on the front end:
http://edleuro.com/new/wp-content/themes/mystile/img/1.png

Related posts

Leave a Reply

3 comments

  1. If this returns an array of terms for the said product:

    $terms = get_the_terms( $product->id, 'pa_filter');
    

    You can check if the returned result array has what you are looking for by doing this:

    if (in_array("Wood Grains", $terms))
    {
        // has it
    }
    else
    {
        // doesn't have it
    }
    

    Update

    Based in your reply to my answer, I have came up with the following:

    Create a helper function like this:

    function termExists($myTerm, $terms)
    {
        if (is_array($terms)) {
            foreach ($terms as $id => $data) {
                if ($data->name == $myTerm)
                    return true;
            }
        }
        return false;
    }
    

    Then you use it like this:

    if (termExists('Wood Grains', get_the_terms($product->id, 'pa_filter')))
    {
        // term exists
    }
    else
    {
        // does not exists
    }
    
  2. i found a better way to resolve my problem. i had this in my content-product.php woocommerce template.

    <?php
        $terms = get_the_terms( $product->id, 'pa_filter');
         foreach($terms as $term){
         if($term->name == 'Wood Grains'){
             echo '<img src="icon_woodgrains.gif">';
         }
        }
    ?>
    

    do take note that the term name is case sensitive.

  3. foreach prints Warning: invalid argument supplied for foreach()…

    This works for me “on a purely”:

    if ( is_product() && has_term( 'Wood Grains', 'pa_filter' )) {
        echo '<img src="Texture.jpg">';
    }