Özel bir sınıflandırmanın tüm terimleri gösterilsin mi?


18

Birkaç özel taksonomi yaptım ve TÜM terimleri göstermem gerekiyor, şimdiye kadar elde ettiğim şey, özel bir yazı türünde seçilen / seçilen taksonomileri gösteriyor, ancak seçili olsun veya olmasın hepsinin gösterilmesine ihtiyacım var . Böylece daha sonra özel bir yazı türü değerinin hangi terimlere göre filtrelediği bir filtre yapabilirim.

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

Şimdiye kadar ne var.

Şimdiden teşekkürler!


Bu hangi noktada başarısız oluyor? Ne kadarını istediğiniz gibi çalışır?
s_ha_dum

Sorun sadece özel bir yazı türünde SEÇİLEN terimleri gösterebilir olmasıdır. Hepsinin seçili olup olmadığını göstermesini istiyorum, sadece göstermek için seçilen her şeye sahip bir kukla yazı tipine sahip olmak istemiyorum.
David H

Yanıtlar:


39

İçin ek bir argüman iletmeniz gerekiyor get_terms(). Varsayılan, "boş" terimleri - hiçbir gönderiye atanmamış terimleri gizlemektir.

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

Çok teşekkür ederim! Ama bir şey sormak istiyorum, neden ilk dizinin gösterildiği yerde bir değişken yerine bir dizi içinde bir dizi oluşturmak istiyorsunuz?
David H

Basitlik. Eğer argüman dizisi daha karmaşık olsaydı, ilk olarak (büyük olasılıkla) ilan ederdim, ama bunu yapmanın en basit yolu olan tek bir argüman için. Her iki şekilde de eşit derecede iyi çalışmalıdır.
s_ha_dum

Çok teşekkürler :) bu beni çok düşündü. Gerçekten onu takdir ederim!
David H

İşler!! Şimdi tüm sınıflandırma seçeneklerinde neler olduğunu görebiliyorum! Bazı eklentiler orada karmaşık bir yapı oluşturur.
eyal_katz

6

4.5.0'dan bu yana, sınıflandırmalar $ args dizisindeki 'sınıflandırma' bağımsız değişkeni üzerinden geçirilmelidir, böylece:

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

burada yayını olmayan terimler varsayılan olarak gizlidir.


3

Bu kod, aşağıdakileri kullanan tüm kategori ve alt kategori özel sınıflandırmalarını alır 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; 
   ?>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.