¿Mostrar todos los términos de una taxonomía personalizada?
Creé algunas taxonomías personalizadas y necesito mostrar TODOS los términos de las mismas. Hasta ahora he logrado mostrar las taxonomías que están seleccionadas/elegidas en un tipo de entrada personalizada, pero necesito mostrarlas todas, estén seleccionadas o no. Esto es para poder crear más adelante un filtro que filtre según los términos que contiene un valor de tipo de entrada personalizada.
<?php
$args=array(
'public' => true,
'_builtin' => false
);
$output = 'names'; // o 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
}
}
}
?>
Esto es lo que tengo hasta ahora.
¡Gracias de antemano!

Necesitas pasar un argumento adicional a get_terms()
. Por defecto se ocultan los términos "vacíos", es decir, términos que no están asignados a ninguna entrada.
$terms = get_terms([
'taxonomy' => $taxonomy,
'hide_empty' => false,
]);
EDICIÓN:
En caso de que quieras mostrar el nombre o el slug de las taxonomías personalizadas que están contenidas en la variable $terms, puedes usar este fragmento de código a continuación:
foreach ($terms as $term){
echo $term->slug." : ";
echo $term->name;
echo "<br><br>";
}
Donde $term->slug
muestra el slug del elemento de taxonomía que está en la lista y $term->name
muestra el nombre del elemento de taxonomía correspondiente.

¡Muchas gracias! Pero quiero preguntar algo, ¿por qué crearías un array dentro de una variable en lugar de declararlo arriba donde se muestra el primer array?

Simplicidad. Si el array de argumentos fuera más complejo lo habría declarado primero (muy probablemente), pero para un único argumento esa es simplemente la forma más directa de hacerlo. Debería funcionar igual de bien de cualquier manera.

Desde la versión 4.5.0, las taxonomías deben pasarse a través del argumento 'taxonomy' en el array $args de la siguiente manera:
$terms = get_terms( array(
'taxonomy' => 'post_tag',
'hide_empty' => false,
) );
donde los términos que no tienen entradas están ocultos por defecto.

Este código obtiene todas las categorías y subcategorías de taxonomías personalizadas usando get_terms()
:
<?php
// Obtener todas las categorías principales (parent = 0) incluyendo las vacías
$wcatTerms = get_terms('product_cat', array('hide_empty' => 0, 'parent' =>0));
foreach($wcatTerms as $wcatTerm) :
?>
<ul>
<li>
<!-- Enlace a la categoría principal -->
<a href="<?php echo get_term_link( $wcatTerm->slug, $wcatTerm->taxonomy ); ?>"><?php echo $wcatTerm->name; ?></a>
<ul class="megaSubCat">
<?php
// Configuración para obtener las subcategorías
$wsubargs = array(
'hierarchical' => 1,
'show_option_none' => '',
'hide_empty' => 0,
'parent' => $wcatTerm->term_id,
'taxonomy' => 'product_cat'
);
// Obtener todas las subcategorías de la categoría actual
$wsubcats = get_categories($wsubargs);
foreach ($wsubcats as $wsc):
?>
<!-- Mostrar cada subcategoría con su enlace -->
<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
// Obtener todas las categorías principales
$categories = get_terms( array(
'taxonomy' => 'freelancer_type',
'hide_empty' => false,
'parent' => 0,
) );
?>
<select class="form-control" name="parent_category" id="parent_category">
<option value="">Seleccionar Categoría</option>
<?php
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="">Seleccionar Subcategoría</option>
</select>
</div>

Tu respuesta podría mejorarse con información adicional de apoyo. Por favor [edita] para agregar más detalles, como citas o documentación, para que otros puedan confirmar que tu respuesta es correcta. Puedes encontrar más información sobre cómo escribir buenas respuestas en el centro de ayuda.
