如何使此代码仅当值存在时有效?

时间:2018-12-08 作者:panther888

php和wordpress编码在这里非常新(1天lol)。这是到目前为止我的代码,问题是当没有为这个属性分配值时,我会收到错误消息。我知道我需要一些说明如果该值存在,那么显示其余代码的内容,但不确定如何添加该值。这是针对woocommerce产品属性btw的。

迄今为止的代码:

$collection_values = get_the_terms( $product->id, \'pa_collection\');

    foreach ($collection_values as $collection_value){
        echo \'<h2 class="collection_title"><a href="\'.get_term_link($collection_value->slug, $collection_value->taxonomy).\'">\'.$collection_value->name.\'</a></h2>\';
    }
错误消息:

Warning: Invalid argument supplied for foreach() in /app/public/wp-content/themes/savoy/woocommerce/single-product/title.php on line 21
编辑:我正在标题中的产品标题上方添加此内容。php页面。

2 个回复
SO网友:Milo

如果我们参考the documentation, 我们看到了get_the_terms 返回数组、false或WP\\u错误对象。因此,在我们的代码中,我们将添加一个检查$collection_values 存在(不是false),并且不是错误,那么我们就知道它必须是一个数组,并且运行foreach 在上面循环。

$collection_values = get_the_terms( $product->id, \'pa_collection\');

if ( $collection_values && ! is_wp_error( $collection_values ) ){
    foreach ($collection_values as $collection_value){
        echo \'<h2 class="collection_title"><a href="\'.get_term_link($collection_value->slug, $collection_value->taxonomy).\'">\'.$collection_value->name.\'</a></h2>\';
    }
}

SO网友:panther888

此代码对我有效:

      $collection_values = get_the_terms( $product->id, \'pa_collection\');
    if( !empty($collection_values) ) :
    foreach ($collection_values as $collection_value){
        echo \'<h2 class="collection_title"><a href="\'.get_term_link($collection_value->slug, $collection_value->taxonomy).\'">\'.$collection_value->name.\'</a></h2>\';
    }

endif;