如何使用标签描述作为标题属性?

时间:2011-10-18 作者:Ian Walters

我正在尝试使用标签为每篇文章创建一个交叉引用列表,并希望标签描述显示在标签旁边和/或作为超链接的标题属性,以便在访问者将光标悬停在链接上时显示描述。

使用TwentyTen主题,我在函数中找到了代码。php,并修改如下:

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;
正如你所看到的,我已经将标题改为交叉引用,通过添加分隔符,我得到了一个标签列表,而不是一个段落。我已经确定了我希望标记描述与单词“here”一起出现的位置。

我原以为它会像添加tag\\u description()一样简单,但这不起作用。如果我在括号中输入一个数字,例如tag\\u description(5),它会在正确的位置显示标签描述,但所有标签的描述都是错误的。

帮助

ThanksIan。

1 个回复
SO网友:fuxia

使用get_the_terms() 并创建自定义数组:

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;
}
的示例用法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>\';
}
enter image description here

结束

相关推荐

In need of array of post tags

在循环中的单个post页面上,我需要一个字符串形式的\\u tags()数组。get\\u tags()为我提供了所有的标签,而不仅仅是这篇文章。有没有一种简单的方法可以做到这一点?