web-dev-qa-db-fra.com

Question avec get_the_term_list

J'utilise cette fonction actuellement dans mon thème pour afficher la taxonomie personnalisée de chaque projet. Dans ce cas, la taxonomie personnalisée est tipo_de_tarea:

echo get_the_term_list( $post->ID, 'tipo_de_tarea' );

J'ai divers tipo_de_tareas. J'aimerais que la fonction affiche un nom plus court, au lieu du nom complet de chaque taxonomie, par exemple:

  • Apuntes => AP
  • Ejercicios => EJ

Comme je le montre dans cet exemple, le côté gauche a la conception actuelle et la droite, le souhait:

 enter image description here 

Je suppose que je dois ajouter des conditions if pour chaque type et le nom souhaité, mais comment puis-je procéder? Je ne connais pas le code pour cela.

Aussi, j'aimerais que chacun ait une classe différente à laquelle une couleur de fond différente peut être assignée.

1
David13_13

Vous pouvez utiliser get_terms() et le parcourir en boucle - en utilisant le terme description en tant que "nom abrégé" et slug en tant que classe spécifique (ou vous pouvez utiliser un tableau de couleurs de votre choix). Regardons un exemple rapide:

<?php
    $terms = wp_get_post_terms( $post_id, 'category' );

    if( ! empty( $terms ) ) : ?>

        <?php foreach( $terms as $term ) : ?>

            <div class="<?php echo $term->slug; ?>"><?php echo $term->description; ?></div>

        <?php endforeach; ?>

<?php
    endif;
?>

Si vous souhaitez en faire une liste ou un lien vous avez le contrôle total sur le code HTML - faites-le moi savoir si vous avez des questions sur le balisage.

1
Howdy_McGee

Merci de votre aide. J'ai enfin trouvé de l'aide ailleurs et j'utilise maintenant ces fonctions dans functions.php:

    // A callback function to add a custom field to our "presenters" taxonomy  
function presenters_taxonomy_custom_fields($tag) {  
   // Check for existing taxonomy meta for the term you're editing  
    $t_id = $tag->term_id; // Get the ID of the term you're editing  
    $term_meta = get_option( "taxonomy_term_$t_id" ); // Do the check  
?>  

<tr class="form-field">  
    <th scope="row" valign="top">  
        <label for="abreviatura"><?php _e('Abreviatura'); ?></label>  
    </th>  
    <td>  
        <input type="text" name="term_meta[abreviatura]" id="term_meta[abreviatura]" size="25" style="width:60%;" value="<?php echo $term_meta['abreviatura'] ? $term_meta['abreviatura'] : ''; ?>"><br />  
        <span class="description"><?php _e('Abreviatura del tipo de tarea'); ?></span>  
    </td>  
</tr>  

<?php  
}  

// A callback function to save our extra taxonomy field(s)  
function save_taxonomy_custom_fields( $term_id ) {  
    if ( isset( $_POST['term_meta'] ) ) {  
        $t_id = $term_id;  
        $term_meta = get_option( "taxonomy_term_$t_id" );  
        $cat_keys = array_keys( $_POST['term_meta'] );  
            foreach ( $cat_keys as $key ){  
            if ( isset( $_POST['term_meta'][$key] ) ){  
                $term_meta[$key] = $_POST['term_meta'][$key];  
            }  
        }  
        //save the option array  
        update_option( "taxonomy_term_$t_id", $term_meta );  
    }  
}  

// Add the fields to the "presenters" taxonomy, using our callback function  
add_action( 'tipo_de_tarea_edit_form_fields', 'presenters_taxonomy_custom_fields', 10, 2 );  

// Save the changes made on the "presenters" taxonomy, using our callback function  
add_action( 'edited_tipo_de_tarea', 'save_taxonomy_custom_fields', 10, 2 );  

Et j'appelle le code avec:

    <?php
$terms = get_the_terms( $post->ID, 'tipo_de_tarea' );
if ($terms && !is_wp_error($terms)): 
    foreach($terms as $term): ?>
        <a href="<?php echo get_term_link( $term->slug, 'tipo_de_tarea'); ?>" rel="tag" class="<?php echo $term->slug; ?>" title="<?php echo $term->name; ?>"><?php echo $term->abreviatura; ?></a>
    <?php
    endforeach;
endif; 
?>

Mais il y a un problème avec les fonctions et je ne vois qu'une colonne vide ...

Quelqu'un sait où est le problème?

Merci!

0
David13_13