web-dev-qa-db-fra.com

Woocommerce Obtenez des étiquettes de produits dans un tableau

Je veux obtenir les balises de produit des produits de woocommerce dans un tableau, pour faire la logique if/else avec elle (in_array), mais mon code ne fonctionne pas:

<?php 

$aromacheck = array() ; 
$aromacheck = get_terms( 'product_tag') ; 
// echo $aromacheck

?>

En faisant écho à $ aromacheck, je ne reçois que des tableaux vides, bien que les balises de produit soient existantes - visibles dans la classe post.

Comment puis-je obtenir correctement les étiquettes de produit dans un tableau?

Solution (merci Noman et nevius):

/* Get the product tag */
$terms = get_the_terms( $post->ID, 'product_tag' );

$aromacheck = array();
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ){
    foreach ( $terms as $term ) {
        $aromacheck[] = $term->slug;
    }
}

/* Check if it is existing in the array to output some value */

if (in_array ( "value", $aromacheck ) ) { 
   echo "I have the value";
} 
11
Gas

Vous devez parcourir le tableau et créer un tableau distinct pour vérifier in_array car get_terms retourne object avec dans le tableau.

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

Donc, après boucle à travers le tableau.

Vous pouvez utiliser in_array ().
Supposons que $term_array contient une balise noir

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

J'ai dû analyser un args-array pour la fonction get_terms. Peut-être que cela aide aussi les autres.

$args = array(
    'number'     => $number,
    'orderby'    => $orderby,
    'order'      => $order,
    'hide_empty' => $hide_empty,
    'include'    => $ids
);

$product_tags = get_terms( 'product_tag', $args );
3
Unicco
$args = array(
  'number'     => $number,
  'orderby'    => $orderby,
  'order'      => $order,
  'hide_empty' => $hide_empty,
  'include'    => $ids
);

$product_tags = get_terms( 'product_tag', $args );

//only start if we have some tags
if ( $product_tags && ! is_wp_error( $product_tags ) ) { 

  //create a list to hold our tags
  echo '<ul class="sb-tag">';

  //for each tag we create a list item
  foreach ($product_tags as $tag) {

    $tag_title = $tag->name; // tag name
    $tag_link = get_term_link( $tag );// tag archive link

    echo '<li  class="sidebar-list-tag" ><a  href="'.$tag_link.'"> <span>'.$tag_title.' </span></a></li>';
  }
  echo '</ul>';
}
0
Abdel Rahman Kamhawy