Flector

Как в облаке меток выделить текущие метки записи?

Выделение текущих меток записи в облаке меток

Иногда требуется выделить в облаке меток текущие метки записи. Стандартным путем это сделать нельзя, так как функция вывода облака меток попусту не обладает такой настройкой. Можно воспользоваться каким-либо сторонним плагином для вывода облака меток, а можно стилизовать стандартный виджет облака меток. Для этого вам необходимо добавить в файл functions.php вашей темы следующий код:

//добавляем текущей метке в облаке класс current-tag start
function wph_add_current_tag($return) {
    $post_tags = array();
 
    if( is_single() ) {
        global $wp_query;
        $post_tags = get_the_terms($wp_query->post->ID, 'post_tag');
    }
 
    if( is_tag() ) {
        $tags = explode('+', get_query_var('tag'));
        foreach($tags as $tag) {
            $post_tags[] = get_term_by('slug', $tag, 'post_tag');
        }
    }
    if($post_tags) {
        foreach($post_tags as $pt) {
            $tag = $pt->term_id;
            $return = str_replace("link-".$tag, "link-".$tag .
            " current-tag", $return);
        }
    }
    return $return;
}
add_filter('wp_tag_cloud', 'wph_add_current_tag');
//добавляем текущей метке в облаке класс current-tag end

И не забудьте стилизовать добавленный класс .current-tag в файле style.css вашей темы или в произвольном коде css:

.current-tag { color: red; }

Красный цвет тут только для примера, никто не мешает вам стилизовать текущие метки на свой собственный вкус (и чтобы подходило под дизайн используемой темы).


Написать комментарий

Для вставки кода воспользуйтесь кнопкой "Код". Используйте предпросмотр!