Mostra tutti i termini di una tassonomia personalizzata?
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!

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.

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?

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.

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.

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

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

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.
