¿Cómo listar términos de taxonomía personalizada sin hipervínculos?
He buscado por todas partes tratando de encontrar una respuesta a mi pregunta. Espero poder obtener ayuda aquí. Aquí va...
Actualmente estoy recuperando los términos de mi taxonomía personalizada usando:
<?php echo get_the_term_list( $post->ID, 'skills', '<ul><li>', '</li><li>', '</li></ul>' ); ?>
Lo que estoy tratando de hacer es recuperar estos mismos términos de taxonomía personalizada específicos de la entrada en una lista sin que se muestren como enlaces. He probado todas las siguientes "soluciones", pero ninguna funciona. Agradecería cualquier ayuda.
Devuelve los términos específicos de la entrada en una cadena larga que no se puede poner en una lista:
$terms_as_text = get_the_term_list( $post->ID, 'skills', '<ul><li>', '</li><li>', '</li></ul>' ) ;
echo strip_tags($terms_as_text);
Devuelve una lista de todos los términos utilizados en todos los tipos de entrada personalizados:
<ul>
<?php $args = array( 'taxonomy' => 'skills', 'orderby' => 'ID', 'order' => 'ASC' );
$categories = get_categories( $args );
foreach($categories as $category) { echo '<li> '. $category->name . '</li>'; }
?>
</ul>
No devuelve nada:
<?php $args = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all');
wp_get_object_terms( $post->ID, $skills, $args );
?>
Incluso he probado get_the_terms
, get_terms
, y get_categories
sin éxito.

Actualicé el ejemplo en la página de get_the_terms
. No estoy seguro de qué se supone que hace ese unset para empezar...

Gracias a ambos @t31os y Wyck por la ayuda. Este es el código con el que terminé, basado en aquí y en el codex.
'<?php $terms = get_the_terms( $post->id, 'skills' );
if ( !is_wp_error($terms)) :
$skills_links = array();
foreach ($terms as $term) {
$skills_links[] = $term->name;
$skills = join( "</li><li>", $skills_links );
?>
<ul><li><?php echo $skills; ?></li></ul>
<?php endif ?>'

Disculpa por la mala publicación. No puedo entender cómo formatearlo para que sea más legible.

Solo usa strip_tags
<?php echo strip_tags(get_the_term_list( $post->ID, 'CUSTOM-TAXONOMY', ' ',', ')); ?>

// Función para limpiar y mostrar los términos de una taxonomía específica de un post
function term_clean($postid, $term)
{
// Obtener los términos asociados al post para la taxonomía especificada
$terms = get_the_terms($postid, $term);
// Recorrer cada término y mostrar su nombre
foreach ($terms as $term) {
echo $term->name;
};
}

Si solo quieres los términos asignados a una publicación específica:
<?php $object_terms = wp_get_object_terms( $post_id, 'skills', array( 'fields' => 'names' ) );
if ( $object_terms ) { ?><ul><li><?php echo implode( '</li><li>', $object_terms ); ?></li></ul><?php } ?>
Si quieres TODOS los términos:
<?php $all_terms = get_terms( 'skills', array( 'fields' => 'names' ) );
if ( $all_terms ) { ?><ul><li><?php echo implode( '</li><li>', $all_terms ); ?></li></ul><?php } ?>

Ayer me encontré con un problema similar y llegué a la siguiente solución:
function taxonomy_list( $taxonomy ) {
$args = array('order'=>'ASC','hide_empty'=>false);
$terms = get_terms( $taxonomy, $args );
if ( $terms ) {
printf( '<ul name="%s">', esc_attr( $taxonomy ) );
foreach ( $terms as $term ) {
printf( '<li>%s</li>', esc_html( $term->name ) );
}
print( '</ul>' );
}
}
Luego, solo pega <?php taxonomy_list( 'ID DE TAXONOMÍA' ); ?>
en tu archivo de plantilla, reemplazando ID DE TAXONOMÍA con el nombre de la taxonomía que corresponda.
Mi uso original fue para crear una lista de las categorías de empleos que tengo en mi bolsa de trabajo. Cada una enlazaba al archivo de la taxonomía. Puedes ver la función completa en mi respuesta a mi propia pregunta en Stackoverflow.

// para mostrar términos de taxonomía sin enlaces: separados con comas
// copia este código en tu function.php
function get_taxonony_toDisplay($post_id, $taxonomy_name) {
$terms = wp_get_post_terms($post_id, $taxonomy_name);
$count = count($terms);
if ( $count > 0 ) {
foreach ( $terms as $term ) {
echo $term->name . ", ";
}
}
}
Como necesitaba mostrar 3 taxonomías separadas con comas, creé una función usando el código de Henry.
Para mostrar usa la siguiente línea:
<?php get_taxonony_toDisplay($post->ID, 'nombre_de_tu_taxonomia' ); ?>

Si deseas ordenar los términos por slug en lugar de por nombre, utiliza esto...
<?php if(has_term('', 'CUSTOM-TAX')) {?>
<?php
$custom_terms = get_the_terms( get_the_ID(), 'CUSTOM-TAX' );
// Asegurarse de que tenemos términos y también verificar el objeto WP_Error
if ( $product_terms
&& !is_wp_error( $product_terms )
) {
@usort( $product_terms, function ( $a, $b )
{
return strcasecmp(
$a->slug,
$b->slug
);
});
// Mostrar tus términos normalmente
$term_list = [];
foreach ( $custom_terms as $term )
//$term_list[] = esc_html( $term->name ); // comenta esta línea si quieres los términos enlazados y viceversa
$term_list[] = '<a href="' . get_term_link( $term ) . '">' . esc_html( $term->name ) . '</a>'; // comenta esta línea si NO quieres los términos enlazados y viceversa
echo implode( ', ', $term_list );
}
?>
<?php } else { ?><?php }?>
