WordPress + WooCommerce 获取产品标签

3
我网站上有一系列产品,每个产品都有自己的标签。我想在结账页面上展示这些标签。我写了一段代码,但它显示了所有产品的所有标签,而不仅仅是购物车中的产品。以下是我的代码:
      global $woocommerce;
  $items = $woocommerce->cart->get_cart();
  foreach($items as $item => $values) {
      $_product =  wc_get_product( $values['data']->get_id());
      echo "<b>".$_product->get_title().'</b>  <br> Quantity: '.$values['quantity'].'<br>';
      $price = wp_get_post_tags($values['product_id'] , '_tag_ids', true);
      echo "  Price: ".$price."<br>";


              $terms = get_terms( 'product_tag' );
      $term_array = array();
      if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
          foreach ( $terms as $term ) {
              $term_array[] = $term->name;
          }

  }


      print_r($values['product_id']);

      print_r($term_array);

      if(in_array('black',$term_array)) {
       echo 'hello exists';
      } else { 
      echo 'not exists';
      }

  }
    }

所以它显示正确的是 "hello exist",但是它显示这个是因为它从所有产品中拉取了所有标签。我怎样才能通过产品ID获取标签呢?我将我的产品ID存储在$values['product_id']中。

我尝试过get_terms($values['product_id'], 'product_tag' );,但它没有起作用!

1个回答

5
您需要使用get_the_terms而不是get_terms
$terms = get_the_terms( get_the_ID(), 'product_tag' );

1
谢谢!$terms = get_the_terms( $values['product_id'], 'product_tag' ); 对我有用 :) - user8566246
1
这是一个很好的答案,如果你不想要文章ID被回显,只需使用get_the_ID()而不是the_ID()即可 :) - Pavel Petrov
谢谢,@PavelPetrov,你说得对,我会更新我的答案,这是我犯的愚蠢错误。 - admcfajn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,