Como usar a descrição da tag como atributo de título?

4

Estou tentando usar tags para criar uma lista de referências cruzadas para cada postagem e desejar que a descrição da tag seja mostrada ao lado da tag e / ou como o atributo de título do hiperlink, de modo que a descrição mostre quando um visitante detém a cursor sobre o link.

Usando o tema TwentyTen, localizei o código em functions.php e o alterei conforme abaixo:

function twentyten_posted_in() {
    // Retrieves tag list of current post, separated by commas.
    $tag_list = get_the_tag_list( $before = '<br /> <br />' , $sep = ' here'.'<br /><br />' , $after = '<br />' );
    if ( $tag_list ) {
        $posted_in = __( 'Cross Reference %2$s. ', 'twentyten' );
    } 


    // Prints the string, replacing the placeholders.
    printf(
        $posted_in,
        get_the_category_list( ',  ' ),
        $tag_list,
                get_permalink(),
        the_title_attribute( 'echo=0' )
    );
}
endif;

Como você pode ver, mudei o cabeçalho para dizer Referência cruzada e, adicionando intervalos, tenho uma lista de tags em vez de um parágrafo. Identifiquei onde quero que a descrição da tag seja usada com a palavra "aqui".

Eu pensei que seria tão simples quanto adicionar tag_description (), mas isso não funcionou. Se eu colocar um número entre parênteses, por exemplo tag_description (5) mostra a descrição da tag no lugar correto, mas é claro que todas as tags têm a descrição errada.

Ajuda!

Obrigado Ian.

    
por Ian Walters 18.10.2011 / 16:27

1 resposta

1

Use get_the_terms() e crie uma matriz personalizada:

function wpse_31396_terms_with_desc( $post_id = NULL, $taxonomy = 'post_tag' )
{
    NULL === $post_id && $post_id = get_the_ID();

    if ( empty ( $post_id ) )
    {
        return '';
    }

    $terms = get_the_terms( $post_id, $taxonomy );

    if ( empty ( $terms ) )
    {
        return '';
    }

    $list = array ();


    foreach ( $terms as $term )
    {
        $list[ $term->term_id ] = array(
            'url' => get_term_link( $term, $taxonomy ),
            'name' => $term->name,
            'description' => $term->description
        );
    }

    return $list;
}

Exemplo de uso para o functions.php :

add_filter( 'the_content', 'wpse_31396_add_terms_with_desc' );

function wpse_31396_add_terms_with_desc( $content )
{
    $tags = wpse_31396_terms_with_desc();

    if ( '' === $tags )
    {
        return $content;
    }

    $taglist = '<h2>Cross Reference</h2><ul class="taglist-with-desc">';
    foreach ( $tags as $tag )
    {
        $desc = empty ( $tag['description'] )
            ? '' : '<div class="tagdesc">' . wpautop( $tag['description'] ) . '</div>';
        $taglist .= sprintf(
            '<li><a href="%1$s">%2$s</a>%3$s</li>',
            $tag['url'],
            $tag['name'],
            $desc
        );
    }

    return $content . $taglist . '</ul>';
}

    
por fuxia 07.07.2012 / 16:48

Tags