Mostra tutti i termini di una tassonomia personalizzata?


18

Ho creato alcune tassonomie personalizzate e ho bisogno di mostrare TUTTI i termini da essa, ciò che ho raggiunto finora è mostrare le tassonomie che sono selezionate / scelte in un tipo di post personalizzato ma ho bisogno di mostrarle tutte, sia che siano selezionate o meno . In modo che successivamente possa creare un filtro che filtra in base a quali termini contiene un valore di tipo di post personalizzato.

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

Quello che ho finora.

Grazie in anticipo!


A che punto fallisce? Quanto funziona nel modo desiderato?
s_ha_dum,

Funziona il problema è che posso solo mostrare i termini SELEZIONATI in un tipo di post personalizzato. Voglio che tutti mostrino se selezionati o no, non voglio avere un tipo di post fittizio che ha tutto selezionato solo per mostrarli.
David H

Risposte:


39

Devi passare un ulteriore argomento a get_terms(). L'impostazione predefinita è nascondere i termini "vuoti": termini che non vengono assegnati a nessun post.

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

Grazie mille! Ma voglio chiedere qualcosa, perché dovresti creare un array all'interno di una variabile invece di dichiararlo sopra dove viene mostrato il primo array?
David H

Semplicità. Se l'array di argomenti fosse più complesso, l'avrei dichiarato per primo (molto probabilmente), ma per un singolo argomento è il modo più semplice per farlo. Dovrebbe funzionare ugualmente bene in entrambi i modi.
s_ha_dum,

Grazie mille :) che mi ha pensato molto. Lo apprezzo molto!
David H

Lavori!! Ora posso vedere cosa sta succedendo con tutte le opzioni di tassonomia! Alcuni plugin creano una struttura complessa.
eyal_katz,

6

Dalla 4.5.0, le tassonomie dovrebbero essere passate tramite l'argomento "tassonomia" nella matrice $ args, quindi:

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

dove i termini che non hanno post sono nascosti per impostazione predefinita.


3

Questo codice recupera tutte le tassonomie personalizzate di categoria e sottocategoria utilizzando 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; 
   ?>
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.