Mostra tutti i termini di una tassonomia personalizzata?

4 mar 2014, 16:15:49
Visualizzazioni: 242K
Voti: 47

Ho creato alcune tassonomie personalizzate e ho bisogno di mostrare TUTTI i termini da esse, finora sono riuscito a mostrare le tassonomie che sono selezionate/scelte in un custom post type ma ho bisogno di mostrarle tutte, che siano selezionate o meno. Così che successivamente possa creare un filtro che filtra in base a quali termini contiene un valore del custom post type.

<?php 
$args=array(
  'public'   => true,
  '_builtin' => false
);
$output = 'names'; // oppure 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 
                }
              }
            }  
            ?>

Questo è quello che ho finora.

Grazie in anticipo!

2
Commenti

In che punto fallisce? Quanto funziona come vorresti?

s_ha_dum s_ha_dum
4 mar 2014 16:26:41

Funziona, il problema è che posso mostrare solo i termini SELEZIONATI in un custom post type. Voglio che vengano mostrati tutti i termini, che siano selezionati o meno, non voglio avere un dummy post type con tutto selezionato solo per mostrarli.

David H David H
4 mar 2014 16:28:30
Tutte le risposte alla domanda 4
4
89

Devi passare un argomento aggiuntivo a get_terms(). L'impostazione predefinita è nascondere i termini "vuoti", ovvero i termini che non sono assegnati a nessun post.

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

MODIFICA:

Nel caso in cui si desideri visualizzare il nome o lo slug delle tassonomie personalizzate contenute nella variabile $terms, è possibile utilizzare questo pezzo di codice qui sotto:

foreach ($terms as $term){
  echo $term->slug." : ";
  echo $term->name;
  echo "<br><br>";
}

Dove $term->slug produce in output lo slug dell'elemento della tassonomia elencato e $term->name produce in output il nome del relativo elemento della tassonomia.

4 mar 2014 16:42:36
Commenti

Grazie mille! Ma vorrei chiedere una cosa, perché creare un array all'interno di una variabile invece di dichiararlo sopra dove viene mostrato il primo array?

David H David H
4 mar 2014 16:48:44

Semplicità. Se l'array degli argomenti fosse stato più complesso l'avrei dichiarato prima (molto probabilmente), ma per un singolo argomento questo è semplicemente il modo più diretto per farlo. Dovrebbe funzionare ugualmente bene in entrambi i modi.

s_ha_dum s_ha_dum
4 mar 2014 16:53:09

Grazie mille :) mi ha insegnato molto. Lo apprezzo davvero!

David H David H
4 mar 2014 17:17:40

Funziona!! Ora posso vedere cosa succede con tutte le opzioni della tassonomia! Alcuni plugin creano strutture complesse al loro interno.

eyal_katz eyal_katz
22 giu 2018 19:41:42
0

Dalla versione 4.5.0, le tassonomie devono essere passate tramite l'argomento 'taxonomy' nell'array $args in questo modo:

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

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

21 lug 2017 15:34:50
0

Questo codice recupera tutte le tassonomie personalizzate di categorie e sottocategorie utilizzando get_terms():

<?php 
// Recupera tutti i termini delle categorie prodotto con genitore 0 (categorie principali)
$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
            // Imposta i parametri per ottenere le sottocategorie
            $wsubargs = array(
               'hierarchical' => 1,
               'show_option_none' => '',
               'hide_empty' => 0,
               'parent' => $wcatTerm->term_id,
               'taxonomy' => 'product_cat'
            );
            // Recupera le sottocategorie
            $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; 
   ?>
14 feb 2017 10:54:48
1
<div class="col-sm-4">  
                <?php 
                // Ottiene le categorie dei freelancer
                $categories = get_terms( array(
                        'taxonomy' => 'freelancer_type',
                        'hide_empty' => false,
                        'parent' => 0,
                    ) );
                ?>
                <select class="form-control" name="parent_category" id="parent_category">
                    <option value="">Seleziona Categoria</option>
                    <?php  
                        // Ciclo attraverso le categorie
                        foreach($categories as $category) {
                            ?>
                                <option value="<?php echo $category->term_id; ?>"><?php echo $category->name; ?></option>
                            <?php 
                        }   
                            
                    ?>      
                </select>
                <select class="form-control" name="child_category" id="child_category">
                    <option value="">Seleziona Sottocategoria</option>
                </select>
            </div>
28 dic 2021 10:27:48
Commenti

La tua risposta potrebbe essere migliorata con informazioni di supporto aggiuntive. Per favore [modifica] per aggiungere ulteriori dettagli, come citazioni o documentazione, in modo che altri possano confermare che la tua risposta è corretta. Puoi trovare maggiori informazioni su come scrivere buone risposte nel centro assistenza.

User User
3 gen 2022 16:48:26