2015-08-09 29 views
6

Chcę dostać tagi iloczyn produktów woocommerce w tablicy, aby robić if/else logikę z nim (in_array), ale mój kod nie działa:woocommerce Uzyskaj Tagi produktów w tablicy

<?php 

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

?> 

Po wyświetleniu echa $ aromacheck, otrzymuję pustą tablicę, chociaż znaczniki produktu istnieją - widoczne w klasie postów.

Jak poprawnie uzyskać tagi produktów w tablicy?

Solution (dzięki Noman i 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

It * does * zwraca tablicę obiektów. Nie można "echo" tablicy obiektów ... – rnevius

+0

To było naprawdę użyteczne –

Odpowiedz

10

Trzeba pętli tablicy i utworzyć osobną tablicę do sprawdzenia in_array ponieważ get_terms powrót object ze w tablicę.

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

Po przejściu przez macierz.

Możesz użyć in_array().
Załóżmy $term_array zawiera znacznik czarny

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

Dzięki, działa sprawdzanie tablicy i uzyskiwanie wartości (głupie mnie używać echa ...), ale niestety wylicza wszystkie znaczniki, a nie tylko te używane dla samego produktu. Czy może być recoded lista tylko konkretnych tagów produktu? – Gas

+1

Nigdy nie pytałeś o to ... Jeśli musisz to zrobić dla określonego produktu, możesz użyć ['get_the_terms()'] (https://codex.wordpress.org/Function_Reference/get_the_terms). – rnevius

+1

Dzięki, to było to, umieściłem '$ terms = get_the_terms ($ post-> ID, 'product_tag');' i działa świetnie! Zmienilem swój post, aby zawierał kompletne rozwiązanie. – Gas

1

miałem analizowania ARG-tablicę do funkcji get_terms. Może ta pomoc również innym.

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

$product_tags = get_terms('product_tag', $args); 
Powiązane problemy