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