2016-11-14 27 views
5

Badałem całą sieć i fora dotyczące mojego pytania, ale wydaje mi się, że nie mogę uzyskać prawidłowych wyników. Zasadniczo próbuję wyświetlić warunki lub atrybuty produktu tylko dla określonej kategorii produktu.Wyświetl warunki lub atrybuty produktu dla konkretnej kategorii produktu (woocommerce)

Oto kod, nad którym pracowałem.

<fieldset class="liquor-types-control filter-controls" > 

    <?php 

    $terms = get_terms('wine', /*<--Product Category */ 'pa_liquor-types' /* <--Product Attribute */); 
    foreach ($terms as $term) : 
    ?> 

    <label> 
     <input type="checkbox" value="<?php echo "." . $term->slug ?>" /> 
     <?php echo $term->name ?> 
    </label> 

    <?php endforeach; ?> 


</fieldset> 


(
    [errors] => Array 
     (
      [invalid_taxonomy] => Array 
       (
        [0] => Invalid taxonomy. 
       ) 

     ) 

    [error_data] => Array 
     (
     ) 
) 
+0

Czy możesz udostępnić 'var_dump ($ terms)', abyśmy mogli zobaczyć format danych? Poza tym, co osiągasz? Jakieś błędy? Upewnij się, że ustawiłeś error_reporting (E_ALL); – mseifert

+0

zaktualizowałem moje pytanie z dodatkowymi szczegółami – clestcruz

Odpowiedz

3

Użycie; po $ term-> slug i $ term-> name.

<label> 
     <input type="checkbox" value="<?php echo $term->slug; ?>" /> 
     <?php echo $term->name; ?> 
    </label> 
+0

Nie sądzę, że to zadziała – clestcruz

+0

Proszę sprawdź swój kod, kod ma błędy. Oświadczenie powinno kończyć się; i dlaczego używasz slug?>. To nie jest poprawne. –

+0

A także get_terms ("wino"); wystarczy. –

3

spróbować czegoś takiego:

<?php 
$terms = get_terms('wine', 'pa_liquor-types'); 

foreach($terms as $term) { ?> 
    <input type="checkbox" value="<?php echo "." . $term['slug'];?>"/> 
    <?php echo $term['name'];?> 
<?php } ?> 
+0

Wypróbowałem twoje rozwiązanie, ale bez powodzenia – clestcruz

4

var_dump pokazuje, że używasz taksonomii na WordPressie. Chociaż nie mam doświadczenia bezpośrednio Wordpress, the Wordpress site docs powiedzieć:

Przed 4.5.0, pierwszy parametr get_terms() była taksonomia lub lista taksonomii:

Od 4.5.0 , taksonomii powinny być przekazywane za pośrednictwem 'taksonomii argument w tablicy $ args:

From the function reference:

$term = get_term($term_id, $taxonomy); 

Daje termin ślimaka: np .: określenie-ślimak-przykładem

$slug = $term->slug; 

Daje nazwy określony: np Termin Nazwa Przykład

$name = $term->name; 

Po pierwsze, upewnij się, że używasz poprawnej wersji - używasz składni od uprzedniego 4.5.0

II, błąd jest powiedzenie, że taksonomia pa_liquor-types jest nieprawidłowy. Musisz sprawdzić, gdzie jest to zdefiniowane.

Sprawdź swoją składnię funkcji create_initial_taxonomies() i opublikuj ją, jeśli to konieczne.

0

Poszczególne terminy odnoszą się do wina i alkoholi, łącz je z pojedynczą tablicą $ terms i przechodź przez tę tablicę, aby uzyskać wszystkie warunki. Mam nadzieję, że to pomaga, nie przetestowałem jeszcze kodu.

<fieldset class="liquor-types-control filter-controls" > 

    <?php 
    global $post; 
    $terms_wine = get_the_terms(get_the_ID(),'wine'); 
    $terms_liquor = get_the_terms(get_the_ID,'pa_liquor-types'); 
    $terms = array(); 
    foreach($terms_wine as $wine){ 
     array_push($terms,$wind); 
     } 
    foreach($terms_liquor as $liquor){ 
     array_push($terms,$liquor); 
     } 


    foreach ($terms as $term) : 
    ?> 

    <label> 
     <input type="checkbox" value="<?php echo "." . $term->slug ?>" /> 
     <?php echo $term->name ?> 
    </label> 

    <?php endforeach; ?> 


</fieldset> 
+0

Nie wiem, czy masz $ post, czy nie, jeśli nie otrzymasz id obecnego produktu, którego warunki chcesz wymienić i wymienić $ post przez id produktu. – Yamu

Powiązane problemy