Ajouter un nom de classe à la miniature de la publication

21

J'utilise des miniatures de publication pour créer un lien vers une page.

Est-il possible d'ajouter un nom de classe à l'image miniature de la publication.

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

Réponses:

42

Oui - vous pouvez passer la classe que vous souhaitez utiliser dans the_post_thumbnail()le cadre de l'argument attributs, par exemple<?php the_post_thumbnail('thumbnail', array('class' => 'your-class-name')); ?>

Réf: http://codex.wordpress.org/Function_Reference/the_post_thumbnail#Styling_Post_Thumbnails

sabreuse
la source
5
Mais cela supprimera la classe attachment-$size.
fuxia
Mais pouvez-vous ajouter la classe "attachment- $ size my-class-name"
Simon Cooper
@SimonCooper que j'ai fait et la classe a maintenant une pièce jointe - sans la taille.
Zhianc
Il s'agit généralement d'une solution mauvaise et non générique. Même l'attachement de codage en dur - taille $, efface toutes les injections de classe futures possibles.
Fusion le
8

Vous pouvez filtrer ces classes.

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'); 

Ajoutez le filtre juste avant d'appeler the_post_thumbnail. Le filtre se supprimera automatiquement.

C'est un peu de trek pour y arriver mais the_post_thumbnailutilise get_the_post_thumbnailqui utilise wp_get_attachment_imagequi applique ce filtre.

s_ha_dum
la source
Le nom de fonction 'alter_attr_wpse_102158' a-t-il une signification particulière? Cette fonction pourrait-elle être appelée myClass - fonction myClass ($ attr) {
Simon Cooper
Le nom est quelque peu descriptif et le suffixe fait référence à cette question. Sinon, pas de sens particulier. De l'intérieur d'une instance de classe - disons une classe de plugin - vous pouvez utiliser array($this,'methodname')et vous pouvez utiliser des classes statiques avec des filtres en utilisantarray('ClassName','methodname')
s_ha_dum
1
Pourquoi ajoutez-vous un filtre qui se supprime?
AlxVallejo
2
@AlxVallejo: Pour qu'il ne s'exécute qu'une seule fois dans le cas particulier où vous souhaitez qu'il s'exécute.
s_ha_dum
0

Votre balise d'image n'a pas de classe vous écrivez juste ce code <?php the_post_thumbnail(); ?>mais votre balise d'image a la classe vous écrivez juste ce code

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

)); ?>
sujan
la source