web-dev-qa-db-fra.com

Comment lister les termes de taxonomie personnalisés sans les liens?

J'ai cherché loin pour essayer de trouver une réponse à ma question. J'espère pouvoir obtenir de l'aide ici. Voici...

Je récupère actuellement les termes de ma taxonomie personnalisée en utilisant:

<?php echo get_the_term_list( $post->ID, 'skills', '<ul><li>', '</li><li>', '</li></ul>' ); ?>

Ce que j'essaie de faire, c'est d'extraire ces mêmes termes de taxonomie personnalisés post-spécifiques dans une liste sans les sortir sous forme de liens. J'ai essayé toutes les "solutions" suivantes, mais aucune d'entre elles ne fonctionne. Toute aide serait appréciée.

Renvoie les termes spécifiques à un poste dans une longue chaîne qui ne peut pas être placée dans une liste:

$terms_as_text = get_the_term_list( $post->ID, 'skills', '<ul><li>', '</li><li>', '</li></ul>' ) ;
echo strip_tags($terms_as_text);

Renvoie une liste de tous les termes utilisés dans tous les types de publication personnalisés:

<ul>
<?php $args = array( 'taxonomy' => 'skills', 'orderby' => 'ID', 'order' => 'ASC' );
$categories = get_categories( $args );
foreach($categories as $category) { echo '<li> '. $category->name . '</li>'; } 
                ?>
</ul>

Ne renvoie rien:

<?php $args = array('orderby' => 'name', 'order' => 'ASC', 'fields' => 'all');
wp_get_object_terms( $post->ID, $skills, $args );
?>

J'ai même essayé get_the_terms, get_terms et get_categories sans succès.

3
Certified K

Peut essayer ceci:

$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>
10
Wyck
$terms = wp_get_post_terms($post->ID, 'TAXONOMYNAME');
$count = count($terms);
if ( $count > 0 ) {
    foreach ( $terms as $term ) {
        echo $term->name . ", ";
    }
}
4
Henry

Il suffit d'utiliser strip_tags

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

J'ai rencontré un problème similaire hier et j'ai proposé la solution suivante:

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>' );
    }
}

Ensuite, il vous suffit de coller <?php taxonomy_list( 'TAXONOMY ID' ); ?> dans votre fichier de modèle, en remplaçant TAXONOMY ID par le nom de la taxonomie.

Mon utilisation initiale était de créer une liste des catégories d'emplois figurant sur mon site. Chacune d'elles était ensuite reliée aux archives de la taxonomie. Vous pouvez voir la fonction complète dans ma réponse tout seul question Stackoverflow .

1
tristanojbacon
function term_clean($postid, $term)
{
    $terms = get_the_terms($postid, $term); 
    foreach ($terms as $term) {  echo $term->name;   };

}
1
Giovanni DUarte

Si vous souhaitez simplement que les termes soient affectés à un poste spécifique:

<?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 vous voulez tous les termes:

<?php $all_terms = get_terms( 'skills', array( 'fields' => 'names' ) );
if ( $all_terms ) { ?><ul><li><?php echo implode( '</li><li>', $all_terms ); ?></li></ul><?php } ?>
1
Rachel Carden
// to display taxonomy terms without links: separated with commas
// copy this code in your 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 . ", ";
    }
}
}

Comme je devais afficher 3 taxonomies séparées par des virgules, j'ai donc créé une fonction en utilisant le code de Henry.

Pour afficher, utilisez la ligne suivante:

<?php get_taxonony_toDisplay($post->ID, 'your_taxonomy_name' ); ?> 
0
Mohammad Mursaleen

Si vous voulez les termes commandés par slug plutôt que par nom, utilisez ceci ...

<?php if(has_term('', 'CUSTOM-TAX')) {?> 
<?php
    $custom_terms = get_the_terms( get_the_ID(), 'CUSTOM-TAX' );
    // Make sure we have terms and also check for WP_Error object
    if (    $product_terms
    && !is_wp_error( $product_terms )
    ) {
    @usort( $product_terms, function ( $a, $b )
    {
    return strcasecmp( 
    $a->slug,
    $b->slug
    );
    });
    // Display your terms as normal
    $term_list = [];
    foreach ( $custom_terms as $term ) 
    //$term_list[] = esc_html( $term->name );  // comment this line out if you want the terms linked  and visa versa
    $term_list[] = '<a href="' . get_term_link( $term ) . '">' . esc_html( $term->name ) . '</a>'; // comment this line out if you DON'T want the terms linked and visa versa
    echo implode( ', ', $term_list );
    }
?>                          
<?php } else { ?><?php }?>
0
Pete