Come elencare i termini della tassonomia personalizzata senza i collegamenti ipertestuali?
Ho cercato ovunque per trovare una risposta alla mia domanda. Spero di poter ottenere aiuto qui. Ecco...
Attualmente sto recuperando i termini della mia tassonomia personalizzata usando:
<?php echo get_the_term_list( $post->ID, 'skills', '<ul><li>', '</li><li>', '</li></ul>' ); ?>
Quello che sto cercando di fare è recuperare questi stessi termini di tassonomia personalizzata specifici per post in un elenco senza che vengano mostrati come link. Ho provato tutte le seguenti "soluzioni", ma nessuna di esse funziona. Qualsiasi aiuto sarebbe apprezzato.
Restituisce i termini specifici del post in un'unica lunga stringa che non può essere messa in un elenco:
$terms_as_text = get_the_term_list( $post->ID, 'skills', '<ul><li>', '</li><li>', '</li></ul>' ) ;
echo strip_tags($terms_as_text);
Restituisce un elenco di tutti i termini utilizzati in tutti i tipi di post personalizzati:
<ul>
<?php $args = array( 'taxonomy' => 'skills', 'orderby' => 'ID', 'order' => 'ASC' );
$categories = get_categories( $args );
foreach($categories as $category) { echo '<li> '. $category->name . '</li>'; }
?>
</ul>
Non restituisce nulla:
<?php $args = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all');
wp_get_object_terms( $post->ID, $skills, $args );
?>
Ho anche provato get_the_terms
, get_terms
, e get_categories
senza successo.

Ho aggiornato l'esempio nella pagina get_the_terms
. Non sono sicuro di cosa dovrebbe fare quel unset per cominciare...

Grazie a entrambi @t31os e Wyck per l'aiuto. Ecco il codice che ho finito per usare, basato su qui e sul 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 ?>'

Scusa per il post poco chiaro. Non riesco a capire come formattarlo per renderlo più leggibile.

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

// Ottieni i termini della tassonomia associati al post corrente
$terms = wp_get_post_terms($post->ID, 'NOMETASSONOMIA');
$count = count($terms);
// Se ci sono termini, mostrali separati da virgola
if ( $count > 0 ) {
foreach ( $terms as $term ) {
echo $term->name . ", ";
}
}

/**
* Funzione per pulire e visualizzare i termini di una tassonomia associati a un post
* @param int $postid ID del post
* @param string $term Nome della tassonomia
*/
function term_clean($postid, $term)
{
// Ottiene i termini della tassonomia associati al post
$terms = get_the_terms($postid, $term);
// Cicla attraverso ogni termine e ne stampa il nome
foreach ($terms as $term) {
echo $term->name;
};
}

Se vuoi solo i termini assegnati a un post specifico:
<?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 } ?>
Se vuoi TUTTI i termini:
<?php $all_terms = get_terms( 'skills', array( 'fields' => 'names' ) );
if ( $all_terms ) { ?><ul><li><?php echo implode( '</li><li>', $all_terms ); ?></li></ul><?php } ?>

Mi sono imbattuto in un problema simile ieri e ho trovato la seguente soluzione:
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>' );
}
}
Quindi, basta incollare <?php taxonomy_list( 'ID DELLA TASSONOMIA' ); ?>
nel tuo file template, sostituendo ID DELLA TASSONOMIA con il nome della tassonomia.
Il mio utilizzo originale era per creare un elenco delle categorie di lavoro che ho sulla mia bacheca di annunci. Ogni elemento poi linkava all'archivio della tassonomia. Puoi vedere la funzione completa nella mia risposta alla mia domanda su Stackoverflow.

// per visualizzare i termini della tassonomia senza link: separati da virgole
// copia questo codice nel tuo file functions.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 . ", ";
}
}
}
Dovevo visualizzare 3 tassonomie separate da virgole, quindi ho creato una funzione basata sul codice di Henry.
Per visualizzarle usa la seguente riga:
<?php get_taxonony_toDisplay($post->ID, 'nome_della_tua_tassonomia' ); ?>

Se desideri ordinare i termini per slug anziché per nome, utilizza questo codice...
<?php if(has_term('', 'CUSTOM-TAX')) {?>
<?php
$custom_terms = get_the_terms( get_the_ID(), 'CUSTOM-TAX' );
// Assicurati che ci siano termini e verifica anche l'oggetto WP_Error
if ( $product_terms
&& !is_wp_error( $product_terms )
) {
@usort( $product_terms, function ( $a, $b )
{
return strcasecmp(
$a->slug,
$b->slug
);
});
// Mostra i termini normalmente
$term_list = [];
foreach ( $custom_terms as $term )
//$term_list[] = esc_html( $term->name ); // commenta questa riga se vuoi i termini collegati e viceversa
$term_list[] = '<a href="' . get_term_link( $term ) . '">' . esc_html( $term->name ) . '</a>'; // commenta questa riga se NON vuoi i termini collegati e viceversa
echo implode( ', ', $term_list );
}
?>
<?php } else { ?><?php }?>
