Tampilkan semua ketentuan taksonomi khusus?

18

Saya membuat beberapa taksonomi khusus dan saya harus menunjukkan SEMUA syarat dari itu, apa yang saya capai sejauh ini menunjukkan taksonomi yang dipilih / dipilih dalam jenis pos kustom tetapi saya perlu semuanya menunjukkan, apakah itu dipilih atau tidak . Sehingga nanti saya bisa membuat filter yang memfilter menurut syarat yang berisi nilai jenis pos kustom.

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

Apa yang saya miliki sejauh ini.

Terima kasih sebelumnya!

David H
sumber
Pada titik mana ini gagal? Berapa banyak yang berfungsi seperti yang Anda inginkan?
s_ha_dum
Berhasil masalahnya adalah bahwa saya hanya dapat menampilkan istilah yang dipilih dalam jenis posting kustom. Saya ingin mereka semua menunjukkan apakah dipilih atau tidak, saya tidak ingin memiliki jenis posting dummy yang semuanya dipilih hanya untuk menunjukkan kepada mereka.
David H

Jawaban:

39

Anda harus memberikan argumen tambahan get_terms(). Standarnya adalah menyembunyikan istilah "kosong" - istilah yang ditetapkan untuk tidak ada pos.

$terms = get_terms([
    'taxonomy' => $taxonomy,
    'hide_empty' => false,
]);
s_ha_dum
sumber
Terima kasih banyak! Tetapi saya ingin bertanya sesuatu, mengapa Anda membuat array di dalam sebuah variabel alih-alih mendeklarasikannya di atas tempat array pertama ditampilkan?
David H
Kesederhanaan. Jika array argumen lebih kompleks saya akan mendeklarasikannya terlebih dahulu (kemungkinan besar), tetapi untuk satu argumen yang hanya cara paling mudah untuk melakukannya. Itu harus bekerja sama baiknya.
s_ha_dum
Terima kasih banyak :) itu banyak berpikir. Saya sangat menghargai itu!
David H
Bekerja !! Sekarang saya bisa melihat apa yang terjadi dengan semua opsi taksonomi! Beberapa plugin membuat struktur kompleks di sana.
eyal_katz
6

Sejak 4.5.0, taksonomi harus dilewatkan melalui argumen 'taksonomi' dalam array $ args jadi:

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

di mana istilah yang tidak memiliki pos disembunyikan secara default.

Lawrence Oputa
sumber
3

Kode ini mengambil semua taksonomi khusus kategori dan subkategori menggunakan 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; 
   ?>
amit gangrade
sumber