Come impostare automaticamente immagine in evidenza WordPress

Tempo di lettura: 2 minuti

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”

  1. 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

    1. 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

Lascia un commento