手助け、これはおそらくwp_tag_cloudのスタイルを制御するための最良の方法です...
私はタグクラウドウィジェット内の私のタグに サイズベースのクラス を追加する方法を探していました。ここでの問題は、この解決法が、例えばテンプレートファイルにハードコードされている場合にのみ機能し、タグクラウドウィジェットには機能しないことです。
私はまた スラッグクラス を追加するこのスニペットを見つけました、そして、彼らは美しく箱から出してすぐに働きます。私は単にそれらをfunction.phpファイルの中に置かなければならなかった。
私は、解決策1を解決策2と同じ方法で機能させようとしていましたが、スラッグ名の代わりにクラス名、あるいはその両方を使用しました。しかし、私はそれを理解することができず、助けが必要です。前もって感謝します。
このコードを試してください:
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;
}
もっと効果的な解決策、あるいはすべてを1つの正規表現にまとめる方法があるかもしれません。しかしうまくいきます(私はpreg_replace()のエキスパートではありません)。 スラッグクラス フィルタと同時に使用できます。
もっと良い/もっと単純なアプローチが "wp_generate_tag_cloud_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');
$ tagには[id]、[url]、[name]、[title]、[slug]、[real_count]、[class]、[font_size]があります。
そのため、すべてのタグにカスタムクラスが必要な場合は、次のように使用できます。
$tags_data[$key]['class'] = "tag-link-".$tag['slug'];