2015-08-09 4 views
6

Ich möchte die Produkt-Tags der WooCommerce Produkte in einer Reihe bekommen, denn mit ihm if/else-Logik zu tun (in_array), aber mein Code funktioniert nicht:WooCommerce Erhalten Sie Produkt-Tags in Array

<?php 

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

?> 

Beim Echo von $ aromatecheck bekomme ich nur ein leeres Array, obwohl die Produkt-Tags existieren - sichtbar in der Post-Klasse.

Wie bekomme ich die Produkt-Tags in einem Array richtig?

Solution (dank Noman und 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"; 
} 
+0

Es * gibt * ein Array von Objekten zurück. Sie können ein Array von Objekten nicht "echo" ... – rnevius

+0

Das war wirklich nützlich –

Antwort

10

Sie müssen sich durch das Array-Schleife und erstellen Sie eine separate Array in_array weil get_terms Rückkehr object mit in Reihe zu überprüfen.

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

Also, Nach Schleife durch das Array. Sie können in_array() verwenden.
Angenommen $term_array enthält tag schwarz

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

Danke, es funktioniert in der Überprüfung der Array und die Werte bekommen (albern mich Echo zu verwenden ...), aber leider listet alle auf Tags, und nicht nur diejenigen, die für das Produkt selbst verwendet werden. Kann es nur die spezifischen Produkt-Tags rekodiert werden? – Gas

+1

Sie haben nie danach gefragt ... Wenn Sie dies für ein bestimmtes Produkt tun müssen, können Sie ['get_the_terms()'] (https://codex.wordpress.org/Function_Reference/get_the_terms) verwenden. – rnevius

+1

Danke, das war's, ich habe '$ terms = get_the_terms ($ post-> ID,' product_tag '); 'und es funktioniert super! Ich habe meinen Beitrag bearbeitet, um die vollständige Lösung zu enthalten. – Gas

1

musste ich eine args-Array auf die Funktion get_terms parsen. Vielleicht hilft das auch anderen.

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

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