Показати всі терміни власної таксономії?


18

Я зробив декілька спеціальних таксономій, і мені потрібно показати ВСІ терміни з цього, що я досягнув досі - це показати таксономії, які вибрані / обрані у користувацькому типі публікації, але мені потрібно, щоб усі вони відображалися, вибрано чи ні . Отже, пізніше я можу зробити фільтр, який фільтрує, згідно з якими термінами містить спеціальне значення типу публікації.

<?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 
                }
              }
            }  
            ?>

Що у мене поки що.

Спасибі заздалегідь!


У який момент це не вдається? Наскільки це працює так, як ви хотіли?
s_ha_dum

Справа в тому, що я можу показувати лише ВИБРАНІ терміни лише у користувальницькому типі публікації. Я хочу, щоб усі вони показувались більш вибраними чи ні, я не хочу мати тип манекена, який має все вибране просто для того, щоб показати їх.
Девід Н

Відповіді:


39

Вам потрібно передати додатковий аргумент get_terms(). За замовчуванням - приховати "порожні" терміни - терміни, призначені для жодної публікації.

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

Дуже дякую! Але я хочу запитати щось, чому б ви створили масив всередині змінної, а не оголошували її вище, де показаний перший масив?
David H

Простота. Якби масив аргументів був складнішим, я б оголосив його спочатку (швидше за все), але для одного аргументу, який є просто найпростішим способом зробити це. Це має працювати однаково добре в будь-якому випадку.
s_ha_dum

Велике спасибі :) що дуже думав про мене. Я дійсно ціную це!
Девід Н

Працює !! Тепер я бачу, що відбувається з усіма параметрами таксономії! Деякі плагіни створюють там складну структуру.
eyal_katz

6

Починаючи з 4.5.0, таксономії повинні передаватися через аргумент «таксономія» в масиві $ args так:

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

де умови, які не мають публікацій, приховані за замовчуванням.


3

Цей код отримує спеціальні таксономії всіх категорій і підкатегорій, використовуючи 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; 
   ?>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.