Agregar nombre de clase a la miniatura de la publicación

21

Estoy usando miniaturas de publicaciones para vincular a una página.

¿Es posible agregar un nombre de clase a la imagen en miniatura de la publicación?

<li><a href="<?php the_permalink(); ?>" ><?php the_post_thumbnail(); ?></a></li>
Simon Cooper
fuente

Respuestas:

42

Sí, puede pasar la clase que desea usar the_post_thumbnail()como parte del argumento de atributos, por ejemplo<?php the_post_thumbnail('thumbnail', array('class' => 'your-class-name')); ?>

Ref: http://codex.wordpress.org/Function_Reference/the_post_thumbnail#Styling_Post_Thumbnails

sabreuse
fuente
55
Pero esto eliminará la clase attachment-$size.
fuxia
¿Pero puede agregar la clase "archivo adjunto- $ tamaño mi-clase-nombre"
Simon Cooper
@SimonCooper lo hice y la clase ahora tiene archivos adjuntos, sin el tamaño.
Zhianc
Esta es generalmente una solución mala y no genérica. Incluso el archivo adjunto de codificación fija $ tamaño borra todas las posibles inyecciones futuras de la clase.
Fusion
7

Puedes filtrar esas clases.

function alter_attr_wpse_102158($attr) {
  remove_filter('wp_get_attachment_image_attributes','alter_attr_wpse_102158');
  $attr['class'] .= ' new-class';
  return $attr;
}
add_filter('wp_get_attachment_image_attributes','alter_attr_wpse_102158'); 

Agregue el filtro justo antes de llamar the_post_thumbnail. El filtro se eliminará automáticamente.

Es un poco difícil llegar hasta allí, pero the_post_thumbnailusa los get_the_post_thumbnailusos wp_get_attachment_imageque aplican ese filtro.

s_ha_dum
fuente
¿El nombre de la función 'alter_attr_wpse_102158' tiene un significado particular que se podría llamar esta función myClass - myClass de función ($ attr) {
Simon Cooper
El nombre es algo descriptivo y el sufijo hace referencia a esta pregunta. De lo contrario, no tiene un significado particular. Desde el interior de una instancia de clase, digamos una clase de complemento, puede usar array($this,'methodname')y puede usar clases estáticas con filtros usandoarray('ClassName','methodname')
s_ha_dum
1
¿Por qué agrega un filtro que se elimina a sí mismo?
AlxVallejo
2
@AlxVallejo: para que solo se ejecute una vez en las circunstancias particulares en las que desea que se ejecute.
s_ha_dum
0

Su etiqueta de imagen no tiene clase, solo escriba este código, <?php the_post_thumbnail(); ?>pero su etiqueta de imagen tiene clase, solo escriba este código

<?php the_post_thumbnail('thumbnail', array(
'class' => 'class_name'

)); ?>
sujan
fuente