A volte non si dispone di un'immagine in evidenza per un post e si desidera che la prima immagine dell'articolo venga utilizzata automaticamente come immagine in evidenza.
Istruzioni: Aggiungi il seguente codice al file functions.php del tuo tema WordPress per impostare automaticamente l'immagine in evidenza per i tuoi post. Se aggiungi un'immagine in evidenza a un post, questo codice verrà sovrascritto e verrà visualizzata la tua immagine in evidenza.
function autoset_featured() {
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);
}
}
}
}
add_action('the_post', 'autoset_featured');
add_action('save_post', 'autoset_featured');
add_action('draft_to_publish', 'autoset_featured');
add_action('new_to_publish', 'autoset_featured');
add_action('pending_to_publish', 'autoset_featured');
add_action('future_to_publish', 'autoset_featured');
Potrebbe interessarti anche rimuovere la casella dei metadati dell'immagine in evidenza.
Una domanda, e se avessi bisogno di escludere alcune pagine? cosa potrei fare... grazie mille
Perché funziona solo quando si carica una nuova immagine e non quando se ne sceglie una dalla libreria, anche se non è utilizzata in nessun altro post?
Utilizza gli allegati, che otterranno l'immagine in base all'immagine assegnata o collegata al post.
Grazie mille, funziona a meraviglia <3
Non ho familiarità con PHP. Sto usando il tema Astra. Dopo aver aggiunto questo codice, un'immagine casuale dal post viene impostata come immagine in evidenza invece della prima immagine. Puoi sistemarlo?
Quindi, prima di tutto grazie per questo pezzo di codice. Come fotografo, mi sono imbattuto in un problema leggermente diverso, ovvero avevo bisogno che la pagina di allegato avesse più funzionalità. Dopo aver configurato la pagina di allegato per mostrare le miniature, ho modificato il tuo codice per impostare automaticamente la miniatura della pagina di allegato come immagine dell'allegato. È stato un vero problema, quindi ecco il codice per chiunque altro possa cercare di fare la stessa cosa.
function set_attachment_thumbnail() { global $post; if( get_post_type($post) === ‘attachment’) { $attachment_thumb = has_post_thumbnail($post->ID); if( !$attachment_thumb ) { set_post_thumbnail($post->ID, $post->ID ); } } } … come sopra con il nome della funzione cambiato.
Spero che questo aiuti qualcun altro. :)
Grazie per aver condiviso il tuo snippet con noi, Chris :)
Ho appena provato ad applicare questo codice – grazie per averlo condiviso – ma ho scoperto subito che trova un'immagine solo circa 2/3 delle volte, e inoltre non è in modo affidabile la prima immagine del post. Qualche idea?
Quando metto il codice alla fine di functions.php, invece, mostra il codice in cima al mio sito web. Sai perché o come risolvere?
È probabile che il codice sia stato aggiunto in modo errato. Penso che dovresti consultare il nostro articolo su come aggiungere correttamente gli snippet di codice.
Potresti anche voler consultare la risoluzione dei problemi degli errori di WordPress e la correzione degli errori più comuni di WordPress.
Ciao,
funziona perfettamente per i post di WordPress ma non per i custom post type.
Hai qualche idea per farlo funzionare su qualsiasi custom post type?
Tanti saluti
Sebastian
Ciao
Ho provato questo codice sul tema Extra di Elegantthemes e non funziona!