如果属性值等于......显示某事

时间:2014-04-23 07:17:27

标签: php wordpress attributes

我正在开发有关wordpress + woocommerce的东西。 我已经为某些产品输入了一些“过滤器”属性值。

因此,如果此产品的属性值包含“Wood Grains”值,我想在前端回显Woodgrains.jpg。

因此,如果值= Texture,我想回显Texture.jpg图标。

下面的代码是我到目前为止所采用的代码,但这只是回显了标记到产品的所有值,我无法弄清楚要在其中获取'if'语句的内容。

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

这是上面代码在前端执行的操作的屏幕截图: http://edleuro.com/new/wp-content/themes/mystile/img/1.png

3 个答案:

答案 0 :(得分:2)

如果这返回上述产品的术语数组:

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

您可以通过执行以下操作来检查返回的结果数组是否具有您要查找的内容:

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

<强>更新

根据您对我的回答的回复,我提出了以下内容:

创建一个这样的辅助函数:

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

然后你就这样使用它:

if (termExists('Wood Grains', get_the_terms($product->id, 'pa_filter')))
{
    // term exists
}
else
{
    // does not exists
}

答案 1 :(得分:0)

我找到了解决问题的更好方法。我在我的content-product.php woocommerce模板中有这个。

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

请注意术语名称区分大小写。

答案 2 :(得分:0)

foreach打印警告:为foreach()提供的参数无效

这对我“纯粹”有效:

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