Come elencare i termini della tassonomia personalizzata senza i collegamenti ipertestuali?

21 lug 2011, 03:20:31
Visualizzazioni: 19.9K
Voti: 5

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.

1
Tutte le risposte alla domanda 8
5
11

Puoi provare questo:

$terms = get_the_terms($post->id, 'skills');
if (!is_wp_error($terms)) : ?>

<?php 
    $skills_links = wp_list_pluck($terms, 'name'); 

    $skills_yo = implode(", ", $skills_links);
    ?>

    <span><?php echo $skills_yo; ?></span>
21 lug 2011 08:11:35
Commenti

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

t31os t31os
21 lug 2011 12:59:43

Neanch'io lo sapevo, è stato un copia/incolla pigro

Wyck Wyck
21 lug 2011 17:54:58

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

Certified K Certified K
22 lug 2011 19:53:35

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

Certified K Certified K
22 lug 2011 19:55:43

amo questa risposta - codice pulito e utile.

Sagive Sagive
8 gen 2015 15:30:10
0

Usa semplicemente strip_tags

<?php echo strip_tags(get_the_term_list( $post->ID, 'CUSTOM-TAXONOMY', ' ',', ')); ?>
18 apr 2016 21:28:48
1
// 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 . ", ";
    }
}
5 mar 2012 01:12:50
Commenti

Anche l'ultimo ha una virgola...

Sergi Sergi
26 mar 2019 18:20:07
0
/**
 * 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;   
    };
}
18 ago 2011 16:33:10
0

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 } ?>
14 mar 2012 04:51:54
0

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.

3 dic 2013 19:33:06
0
// 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' ); ?>
13 feb 2014 10:14:48
0

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 }?>
13 giu 2016 11:35:40