Отдельный класс css для каждого тега в облаке тегов wp


Помогите, это, вероятно, лучший способ контролировать стиль wp_tag_cloud...

Я искал способ добавить классы на основе размера в мои теги в виджете облако тегов. Проблема здесь в том, что это решение работает только в том случае, если оно жестко закодировано, например, в файле шаблона, но не для виджета облака тегов.

Я также нашел этот фрагмент для добавления классов слизняков, и они прекрасно работают прямо из коробки. Я просто должен был поместите их внутрь function.php файл.

Я пытался заставить решение номер один работать так же, как работает решение номер два, но с именами классов на основе размера вместо имен слизней или даже обоих. Однако я не могу в этом разобраться и нуждаюсь в помощи. Заранее спасибо.

 2
Author: Community, 2012-08-18

2 answers

Попробуйте этот код:

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_replace()). может использоваться одновременно с фильтром класса slug.

 3
Author: Michael, 2017-04-13 12:37:38

Возможно, лучший/более простой подход заключается в подключении "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');

В теге $ у вас есть [идентификатор], [url], [имя], [заголовок], [слизняк], [реальный счет], [класс], [размер шрифта]

Поэтому, если вам нужен пользовательский класс для каждого тега, вы можете использовать что-то вроде:

$tags_data[$key]['class'] = "tag-link-".$tag['slug'];
 0
Author: Tribalpixel, 2016-01-21 14:27:55