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.
Zhianc
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) {
Simon Cooper
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')
s_ha_dum
http://codex.wordpress.org/Function_Reference/add_filter#Notes
s_ha_dum
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.
Howdy_McGee
Su wp 5.7.1 non lo farà. Inoltre, il parametro $size è opzionale - (https://developer.wordpress.org/reference/functions/the_post_thumbnail/#parameters)
Dexter
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.
Howdy_McGee