关于获取术语列表的问题

时间:2016-06-15 作者:David13_13

我现在在我的主题中使用这个函数来显示每个项目的自定义分类法。在本例中,自定义分类是tipo_de_tarea:

echo get_the_term_list( $post->ID, \'tipo_de_tarea\' );
我有各种tipo\\u de\\u tareas。我希望函数显示一个较短的名称,而不是每个分类法的完整名称,例如:

正如我在本例中所示,左侧为当前设计,右侧为所希望的:

enter image description here

我想我需要补充一下if 每个tipo de tarea的条件和希望的名称,但我如何才能做到这一点?我不知道这个的代码。

此外,我希望每一个都有一个不同的类,可以为每个类指定不同的背景色。

2 个回复
SO网友:Howdy_McGee

你可以使用get_terms() 并循环遍历它-使用术语描述作为“短名称”,使用slug作为特定类(或者可以使用您选择的颜色数组)。让我们看一个简单的例子:

<?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;
?>
如果你想列一个清单,或者link from it 您可以完全控制HTML-如果您对标记有任何疑问,请告诉我。

SO网友:David13_13

谢谢你的帮助。我最终在另一个地方找到了帮助,现在我正在函数中使用这些函数。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 );  
我用以下代码调用代码:

    <?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; 
?>
但函数有一些问题,我只看到一个空白列。。。

有人知道问题出在哪里吗?

谢谢

相关推荐

GET_THE_TERMS与wp_GET_POST_TERMS中的奇怪结果

我正在尝试制作一个面包屑函数,但有一个小问题。。。使用时:$categories = get_the_terms( $post->ID, \'product_cat\' ); 我得到了一个循环中使用的类别数组,等等。唯一的问题是它是按字母顺序排列的。(我希望它按层次顺序排列。)经过一番挖掘,我发现了一种替代方法,即使用wp\\u get\\u post\\u terms(),但我肯定遗漏了一些东西,因为当我使用此方法时:$categories = wp_get_post_terms( $p