Wp_tag_cloud中每个标签的单独css类

时间:2012-08-18 作者:Marc Wiest

帮助,这可能是控制wp\\u tag\\u云样式的最佳方式。。。

我在想办法size based classes 标记云小部件中的我的标记。这里的问题是,此解决方案仅在硬编码到例如模板文件时有效,而不适用于标记云小部件。

我还找到了要添加的代码段slug classes 而且它们在开箱即用的情况下工作得很好。我只需将它们放在函数中。php文件。

我试图让解决方案1以与解决方案2相同的方式工作,但使用基于大小的类名,而不是slug名称,甚至两者都使用。然而,我想不出来,需要帮助。提前谢谢。

2 个回复
最合适的回答,由SO网友:Michael 整理而成

请尝试以下代码:

add_filter ( \'wp_tag_cloud\', \'tag_cloud_font_size_class\' );  
function tag_cloud_font_size_class( $taglinks ) { 
    $tags = explode(\'</a>\', $taglinks);
    $regex1 = "#(.*style=\'font-size:)(.*)((pt|px|em|pc|%);\'.*)#e"; 
    $regex2 = "#(style=\'font-size:)(.*)((pt|px|em|pc|%);\')#e";         
    $regex3 = "#(.*class=\')(.*)(\' title.*)#e";         
    foreach( $tags as $tag ) {         
        $size = preg_replace($regex1, "(\'\'.round($2).\'\')", $tag ); //get the rounded font size       
        $tag = preg_replace($regex2, "(\'\')", $tag ); //remove the inline font-size style
        $tag = preg_replace($regex3, "(\'$1tag-size-\'.($size).\' $2$3\')", $tag ); //add .tag-size-{nr} class
        $tagn[] = $tag;
    }     
    $taglinks = implode(\'</a>\', $tagn);     
return $taglinks; 
}
可能有更有效的解决方案,或者有一种方法可以将其全部放在一个正则表达式中;但它是有效的(我不是preg\\u replace()方面的专家)。可与同时使用slug class 滤器

SO网友:Tribalpixel

也许更好/更简单的方法是挂接“wp\\u generate\\u tag\\u cloud\\u data”;)

function tribalpixel_tag_cloud_class($tags_data) {

    foreach ($tags_data as $key => $tag) {
        $tags_data[$key][\'class\'] =  $tags_data[$key][\'class\'] ." myCustomClass";
    }
    return $tags_data;
}

add_filter(\'wp_generate_tag_cloud_data\', \' tribalpixel_tag_cloud_class\');
在$标记中,您有[id]、[url]、[名称]、[标题]、[slug]、[real\\u count]、[class]、[font\\u size]

因此,如果您想为每个标记创建一个自定义类,您可以使用如下内容:

$tags_data[$key][\'class\'] = "tag-link-".$tag[\'slug\'];

结束

相关推荐

remove tags from posts in php

我觉得这应该是一个简单的问题,但我想不出来。如果我有一个post\\u id,如何在php中从该帖子中删除特定标记??我知道如何更新元信息,但标签信息是不同的。