Pokaż wszystkie warunki niestandardowej taksonomii?


18

Zrobiłem kilka niestandardowych taksonomii i muszę pokazać WSZYSTKIE z nich, to, co do tej pory osiągnąłem, pokazuje taksonomie, które są wybrane / wybrane w niestandardowym typie postu, ale potrzebuję wszystkich z nich do pokazania, niezależnie od tego, czy jest wybrane, czy nie . Aby później móc utworzyć filtr, który filtruje według warunków, które zawiera wartość niestandardowego typu postu.

<?php 
$args=array(
  'public'   => true,
  '_builtin' => false
);
$output = 'names'; // or objects
$operator = 'and';
$taxonomies=get_taxonomies($args,$output,$operator); 
if  ($taxonomies) {
  foreach ($taxonomies  as $taxonomy ) {
    $terms = get_terms($taxonomy);
        foreach ( $terms as $term) {
?>
        <li><br><a href="#"><input type="checkbox" name="profile[]" value=""><?php echo $term->name; ?> <br/></a></li>
       <?php 
                }
              }
            }  
            ?>

Co mam do tej pory.

Z góry dziękuję!


W którym momencie to się nie udaje? Ile z tego działa tak, jak chcesz?
s_ha_dum

Problem polega na tym, że mogę wyświetlać WYBRANE warunki tylko w niestandardowym typie postów. Chcę, aby wszystkie były pokazywane niezależnie od tego, czy są zaznaczone, czy nie, nie chcę mieć fikcyjnego typu posta, który ma wszystko wybrane tylko po to, aby je pokazać.
David H

Odpowiedzi:


39

Musisz przekazać dodatkowy argument do get_terms(). Domyślnie ukrywa się „puste” warunki - warunki, które nie są przypisane do żadnych postów.

$terms = get_terms([
    'taxonomy' => $taxonomy,
    'hide_empty' => false,
]);

Dziękuję bardzo! Chcę jednak zapytać, dlaczego stworzyłbyś tablicę wewnątrz zmiennej zamiast zadeklarować ją powyżej, gdzie pokazano pierwszą tablicę?
David H

Prostota. Gdyby tablica argumentów była bardziej złożona, zadeklarowałbym ją najpierw (najprawdopodobniej), ale dla pojedynczego argumentu jest to najprostszy sposób na zrobienie tego. Powinno działać równie dobrze w obu kierunkach.
s_ha_dum

Wielkie dzięki :) bardzo mi to pomyślało. Bardzo to doceniam!
David H

Pracuje!! Teraz widzę, co się dzieje z wszystkimi opcjami taksonomii! Niektóre wtyczki tworzą tam złożoną strukturę.
eyal_katz

6

Od wersji 4.5.0 taksonomie powinny być przekazywane za pomocą argumentu „taksonomia” w tablicy $ args, aby:

$terms = get_terms( array(
    'taxonomy' => 'post_tag',
    'hide_empty' => false,
) );

gdzie warunki, które nie mają postów są domyślnie ukryte.


3

Ten kod pobiera wszystkie niestandardowe taksonomie kategorii i podkategorii za pomocą get_terms():

<?php $wcatTerms = get_terms('product_cat', array('hide_empty' => 0, 'parent' =>0)); 
   foreach($wcatTerms as $wcatTerm) : 
   ?>
<ul>
   <li>
      <a href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a>
      <ul class="megaSubCat">
         <?php
            $wsubargs = array(
               'hierarchical' => 1,
               'show_option_none' => '',
               'hide_empty' => 0,
               'parent' => $wcatTerm->term_id,
               'taxonomy' => 'product_cat'
            );
            $wsubcats = get_categories($wsubargs);
            foreach ($wsubcats as $wsc):
            ?>
         <li><a href="<?php echo get_term_link( $wsc->slug, $wsc->taxonomy );?>"><?php echo $wsc->name;?></a></li>
         <?php
            endforeach;
            ?>  
      </ul>
   </li>
</ul>
<?php 
   endforeach; 
   ?>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.