Imposta l'immagine in evidenza per i template di archivio
Vorrei impostare un'immagine in evidenza per i template di archivio del mio tema. Per quanto ne so, non c'è un modo per farlo nell'interfaccia di amministrazione di WordPress (come invece avviene per Pagine e Articoli).
Stavo pensando di scrivere una funzione che filtra tra le immagini in evidenza attualmente caricate e abbina il template al nome del file. Potrebbe essere un po' complesso.
So anche che esistono le opzioni del tema. Ma mi sembra un po' troppo da gestire.
Come consiglieresti di procedere per facilitare l'amministrazione delle Immagini in evidenza (Tema -> Intestazione) e la manutenzione...

Ci sono molti archivi in WordPress. Archivi di tag, archivi di date, archivi di categorie, archivi di termini, archivi di autori. A quale archivio ti riferisci?
Potresti iniziare provando il plugin Taxonomy Images http://wordpress.org/extend/plugins/taxonomy-images/

Questo è vecchio, ma è il primo risultato che appare su Google per questo argomento.
Il modo in cui ho risolto è stato creare una nuova pagina. Non darle lo stesso nome della tua pagina di archivio (WordPress non gradisce pagine con lo stesso nome della pagina di archivio, causa problemi), puoi chiamarla come vuoi. Imposta l'immagine in evidenza e poi richiamala nel tuo template di archivio usando questo codice:
$post_id = 8;
$queried_post = get_post($post_id);
$src = wp_get_attachment_image_src(get_post_thumbnail_id($queried_post->ID), '') ;
$thumb_id = get_post_thumbnail_id($post_id);
?>
<img src="<?php echo $src[0]; ?>" class="img-responsive" />
Per spiegarlo:
$post_id = 8;
è il numero ID della tua nuova pagina.
$src = wp_get_attachment_image_src(get_post_thumbnail_id($queried_post->ID), '') ;
trova l'immagine in evidenza associata a questa pagina
<img src="<?php echo $src[0]; ?>" class="img-responsive" />
mostra l'immagine in evidenza dalla tua nuova pagina.

Puoi farlo via CSS definendo una regione per l'immagine di intestazione nel tuo archive.php e impostando un'immagine di sfondo nel tuo style.css
Oppure puoi utilizzare il plugin Dynamic Headers http://wordpress.org/extend/plugins/dynamic-headers/ (funziona benissimo anche se non viene aggiornato dal 2010)

Arrivo un po' in ritardo su questo, ma credo che questo plugin risponda alla domanda originale: http://wordpress.org/plugins/categories-images/
Consente a un amministratore di selezionare un'immagine in evidenza per una particolare categoria/tag/tassonomia nel pannello di modifica della tassonomia. Può poi essere utilizzata nel file archive.php del tema (ad esempio) richiamando z_taxonomy_image_url();
.
Se preferisci sviluppare una soluzione personalizzata, potresti dare un'occhiata al codice di quel plugin come punto di partenza.

Penso che dovresti optare per il metodo manuale, qualcosa del genere:
- accedi alla pagina "MODIFICA" di ogni categoria e nella descrizione inserisci in questo modo:
[image url="https://upload.wikimedia.org/wikipedia/commons/0/0c/Bunker_in_Albanian_Alps.jpg"]
- recupera l'immagine per la categoria:
if (is_archive()) {
if (!empty($GLOBALS['wp_query']->queried_object->description) ) {
$cat_description =$GLOBALS['wp_query']->queried_object->description);
//nota: da altre pagine, puoi ottenere la descrizione della categoria con: get_term('1533' , 'category')->description;
preg_match('/url\=\"(.*?)\"/si', $cat_description, $new);
if(!empty($new[1])) {
$found_image= $new[1];
}
}
}
ora puoi utilizzare quell'immagine ovunque, nell'head
o nella pagina...

YOAST! Premium lo fa già in modo nativo.
Tuttavia, io uso ACF, dove posso creare una pagina di opzioni in cui ho aggiunto un campo repeater per impostare un'immagine in evidenza per ogni tipo di post.
Poi, con la funzione qui sotto aggiunta al mio functions.php, richiamo i meta tag necessari negli archivi dei tipi di post per cui ho definito un'immagine in evidenza.
function custom_featured_archive_image() {
$o = get_field("featured_images", "option");
if (is_array($o)) {
foreach($o as $option) {
if (is_post_type_archive($option["post_type"])) {
$image_id = $option["image"];
$image_url = wp_get_attachment_image_src($image_id, "original");
$mime_type = get_post_mime_type($image_id);
echo '
<meta property="og:image" content="'.$image_url[0].'">
<meta property="og:image:width" content="'.$image_url[1].'">
<meta property="og:image:height" content="'.$image_url[2].'">
<meta property="og:image:type" content="'.$mime_type.'">
<meta name="twitter:image" content="'.$image_url[0].'">
';
}
}
}
}
add_action('wp_head', 'custom_featured_archive_image', 0);
