Como adicionar classes a imagens com base em suas categorias?

4

Eu preciso ser capaz de: 1.) atribuir categorias a imagens e 2.) adicionar classes a todas as imagens que correspondam às suas categorias designadas.

Consegui adicionar categorias a imagens com o seguinte:

function ug_add_categories_to_attachments() {
    register_taxonomy_for_object_type( 'category', 'attachment' );
}
add_action( 'init' , 'ug_add_categories_to_attachments' );

E eu encontrei uma função para adicionar uma classe às imagens assim:

function add_image_class($class){
    $class .= ' additional-class';
    return $class;
}
add_filter('get_image_tag_class','add_image_class');

Mas eu não sou avançado o suficiente com php para levá-lo muito mais longe. Eu tentei isso

function ug_add_image_class($class){
    foreach(get_the_category() as $cat) { $class .= ' category-'.$cat->slug; };
    return $class;
}
add_filter('get_image_tag_class','ug_add_image_class');

mas sem amor ...

Ajuda? Idéias? Por favor? e feliz sexta-feira!

    
por heytricia 02.08.2014 / 00:10

1 resposta

4

Isso deve fazer o truque:

/**
 * Append the image categories to the current image class.
 *
 * @see http://wordpress.stackexchange.com/a/156576/26350
 */

add_filter( 'get_image_tag_class', 
    function( $class, $id, $align, $size )
    {
        foreach( (array) get_the_category( $id ) as $cat ) 
        { 
            $class .= ' category-' . $cat->slug; 
        }
        return $class;
    }
, 10, 4 );

Testes (WP 3.9.1):

Se definirmos as categorias da imagem como (por exemplo):

rolling-stones, steel-wheels-tour, wembley

Screenshot:

edepoisinseriraimagemnapostagem,obtemosasclassesextrasconformeoesperado:

category-rolling-stonescategory-steel-wheels-tourcategory-wembley

Screenshot:

    
por birgire 02.08.2014 / 09:52