Aggiungere un nome di classe alla miniatura dell'articolo
Sto usando le miniature degli articoli per collegarle a una pagina.
È possibile aggiungere un nome di classe all'immagine della miniatura dell'articolo.
<li><a href="<?php the_permalink(); ?>" ><?php the_post_thumbnail(); ?></a></li>

Sì - puoi passare la classe che vuoi utilizzare a the_post_thumbnail()
come parte dell'argomento degli attributi, ad esempio <?php the_post_thumbnail('thumbnail', array('class' => 'il-tuo-nome-classe')); ?>
Rif: http://codex.wordpress.org/Function_Reference/the_post_thumbnail#Styling_Post_Thumbnails

@SimonCooper L'ho fatto e ora la classe ha attachment- senza la dimensione.

Puoi filtrare quelle classi.
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');
Aggiungi il filtro appena prima di chiamare the_post_thumbnail
. Il filtro si rimuoverà automaticamente.
È un po' complesso arrivarci ma the_post_thumbnail
utilizza get_the_post_thumbnail
che a sua volta usa wp_get_attachment_image
il quale applica quel filtro.

Il nome della funzione 'alter_attr_wpse_102158' ha un significato particolare o potrebbe essere chiamata myClass - function myClass($attr) {

Il nome è abbastanza descrittivo e il suffisso fa riferimento a questa domanda. Altrimenti, non ha un significato particolare. Dall'interno di un'istanza di classe - ad esempio una classe di plugin - puoi usare array($this,'nomeMetodo')
e puoi usare classi statiche con i filtri utilizzando array('NomeClasse','nomeMetodo')

http://codex.wordpress.org/Function_Reference/add_filter#Notes

Per la maggior parte delle immagini nei miei siti web aggiungo un elemento figure attorno alle immagini come mostrato sotto. In questo modo mantengo tutto intatto e posso comunque richiamare l'elemento con una classe nel CSS.
<?php if ( has_post_thumbnail() ) { ?>
<figure class="your-class">
<?php echo get_the_post_thumbnail(); ?>
</figure>
<?php } ?>

Maggio 2021
Testato e funzionante su WordPress 5.7 ✔
Predefinito
Il codice predefinito the_post_thumbnail()
restituirà tutti gli attributi richiesti da WordPress.
<?php the_post_thumbnail(); ?>
<!-- DOM -->
<img
src="http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1.jpg"
class="attachment-post-thumbnail size-post-thumbnail wp-post-image"
alt=""
loading="lazy"
srcset="http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1.jpg 1500w,
http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1-300x160.jpg 300w,
http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1-1024x546.jpg 1024w,
http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1-768x410.jpg 768w"
sizes="(max-width: 1500px) 100vw, 1500px"
width="1500"
height="800"
>
Utilizzo dell'attributo class
come array
Utilizzando l'attributo class
senza il parametro $size
o con $size
impostato su thumbnail
, l'attributo srcset
verrà completamente rimosso. Perché avresti bisogno di immagini responsive quando la dimensione è solo 150 x 150
?
<?php the_post_thumbnail(array('class' => 'classname')); ?>
<?php the_post_thumbnail('thumbnail' array('class' => 'classname')); ?>
<!-- DOM -->
<img
src="http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1-150x150.jpg"
class="classname wp-post-image"
alt=""
loading="lazy"
width="150"
height="150"
>
L'attributo srcset
sarà disponibile per dimensioni diverse da thumbnail
. Le dimensioni disponibili sono thumbnail
, medium
, large
, full
. Le dimensioni possono essere regolate in 'Dashboard > Impostazioni > Media' di WordPress.
thumbnail: 150px
medium: 300px
large: 1024px
full: Dimensioni originali del file caricato
Utilizzando la dimensione medium
.
<?php the_post_thumbnail('medium' array('class' => 'classname')); ?>
<!-- DOM -->
<img
src="http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1-300x160.jpg"
class="classname img-fluid wp-post-image"
alt=""
loading="lazy"
srcset="http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1-300x160.jpg 300w,
http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1-1024x546.jpg 1024w,
http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1-768x410.jpg 768w,
http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1.jpg 1500w"
sizes="(max-width: 300px) 100vw, 300px"
width="300"
height="160"
>
Utilizzo della funzione
Puoi utilizzare una funzione per includere la classe ai post (funzione fornita da @s_ha_dum). Aggiungo qui la classe Bootstrap img-fluid
. Attenzione! Leggi tutto.
// utilizzo di una funzione per aggiungere una classe a `the_post_thumbnail()`
function alter_attr_wpse_102158($attr) {
remove_filter('wp_get_attachment_image_attributes','alter_attr_wpse_102158');
$attr['class'] .= ' img-fluid';
return $attr;
}
add_filter('wp_get_attachment_image_attributes','alter_attr_wpse_102158');
Nota come la classe Bootstrap img-fluid
viene aggiunta all'attributo class.
<?php the_post_thumbnail(); ?>
<!-- DOM -->
<img
src="http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1.jpg"
class="attachment-post-thumbnail size-post-thumbnail img-fluid wp-post-image"
alt=""
loading="lazy"
srcset="http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1.jpg 1500w,
http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1-300x160.jpg 300w,
http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1-1024x546.jpg 1024w,
http://example.com/wp-content/uploads/2021/04/your-image-1500x800-1-768x410.jpg 768w"
sizes="(max-width: 1500px) 100vw, 1500px"
width="1500"
height="800"
>
La class
della funzione scompare nel secondo post
Quando si utilizza una funzione, l'attributo class
funziona solo sul primo post e scompare nel secondo. Utilizza la classe direttamente in the_post_thumbnail()
.
<?php the_post_thumbnail('full' array('class' => 'img-fluid')); ?>
Ricorda che l'attributo srcset
è inutile per la dimensione thumbnail
.

Chiamare qualcosa come the_post_thumbnail(array('class' => 'classname'));
in realtà produrrà una serie di PHP Warnings. Se il primo parametro è un array ci si aspetta i parametri larghezza e altezza. Inoltre, verranno comunque emessi i valori srcset se l'immagine ha altre dimensioni.

Su wp 5.7.1 non lo farà. Inoltre, il parametro $size è opzionale - (https://developer.wordpress.org/reference/functions/the_post_thumbnail/#parameters)

Ho provato questo su 5.7.1 e ho ottenuto srcsets come previsto. Il parametro $size
può essere opzionale, ma ciò non significa che puoi semplicemente saltarlo e passare al parametro successivo. Se segui la documentazione attraverso the_post_thumbnail()
-> get_the_post_thumbnail()
-> wp_get_attachment_image()
passerà quell'array come $size
fino in fondo poiché è il primo parametro fornito. Sentiti libero di unirti a The Loop Chat per una discussione più ampia rispetto a quanto può accadere nei commenti qui.
