A quanti di voi è mai successo di scrivere un articolo, e vi siete dimenticati di impostare l’immagine in evidenza?
Poco male se si tratta di pochi articoli, perchè il tutto è facilmente risolvibile entrando nei post e riassegnare manualmente l’immagine.
La faccenda si complica se abbiamo un considerevole numero di post, e ritornare su ogni articolo e riassegnare l immagine potrebbe essere un lavoro troppo lungo, noioso e snervante.
Ecco che voglio condividere con voi, una soluzione proprio per questo.
Copiate ed incollate questo snippet all’interno del file functions.php:
function setta_immagine_in_evidenza() {
global $post;
if (!has_post_thumbnail($post->ID)) {
$attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );
if ($attached_image) {
foreach ($attached_image as $attachment_id => $attachment) {
set_post_thumbnail($post->ID, $attachment_id);
}
}
}
}
// Usa temporaneamente solo per generare tutte le vecchie immagini in evidenza
add_action(the_post, setta_immagine_in_evidenza);
// Per i nuovi post
add_action(save_post, setta_immagine_in_evidenza);
add_action(draft_to_publish, setta_immagine_in_evidenza);
add_action(new_to_publish, setta_immagine_in_evidenza);
add_action(pending_to_publish, setta_immagine_in_evidenza);
add_action(future_to_publish, setta_immagine_in_evidenza);
Questo script è molto semplice; verifica se il post specifico ha un’immagine in evidenza settata.
Nel caso in cui l’immagine in evidenza non è impostata, viene automaticamente assegnata prelevando la prima immagine presente nell’articolo.
Dato che questa operazione viene eseguita su ogni post visualizzato, e ciò potrebbe portare a un lieve calo di prestazioni al tuo sito web, si consiglia di rimuovere la seguente righe una volta che sono state generate tutte le immagini in evidenza:
// Usa temporaneamente solo per generare tutte le vecchie immagini in evidenza add_action(the_post, setta_immagine_in_evidenza);
Se non si dispone di un’immagine nel post, il codice seguente consente di impostare un’immagine predefinita da impostare come immagine in evidenza. L unico cambiamento dall’alto è l’istruzione else { } che imposta l’immagine di default.
function setta_immagine_in_evidenza() {
global $post;
$already_has_thumb = has_post_thumbnail($post->ID);
if (!$already_has_thumb) {
$attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" );
if ($attached_image) {
foreach ($attached_image as $attachment_id => $attachment) {
set_post_thumbnail($post->ID, $attachment_id);
}
} else {
set_post_thumbnail($post->ID, 414); //414 è id immagine
}
}
}
add_action(the_post, setta_immagine_in_evidenza);
add_action(save_post, setta_immagine_in_evidenza);
add_action(draft_to_publish, setta_immagine_in_evidenza);
add_action(new_to_publish, setta_immagine_in_evidenza);
add_action(pending_to_publish, setta_immagine_in_evidenza);
add_action(future_to_publish, setta_immagine_in_evidenza);
E necessario modificare l’id 414 con il quello che corrisponde alla vostra immagine.
Dubbi o suggerimenti? Alla Prossima.


3 commenti su “Come impostare automaticamente immagine in evidenza WordPress”
Ciao, invece io vorrei che tutti i post di una categoria avessero la stessa immagine. Mi spiego meglio: se inserisco un posto sulle ricette auotmaticamnte compare l’immagine Y, se il post parla di ristoranti compare l’immagine X.
Ovviamente nel sito Y sarà la categoria Ricette e X la categoria Ristoranti.
Grazie
Ciao
Ciao, ho capito la tua richiesta 🙂
Va modificato il codice e inserita la condizione.
Dammi qualche giorno e provo a modificare il codice ed adattarlo alle tue esigenze.
Ti aggiorno,
un saluto
Grazie di cuore