Establecer imagen destacada para plantillas de archivo
Quiero establecer una imagen destacada para las plantillas de archivo de mi tema. Hasta donde sé, no hay una forma de hacer esto en el administrador de WordPress (como con Páginas y Entradas).
Estaba pensando en escribir una función que filtre a través de las imágenes destacadas actualmente subidas y haga coincidir la plantilla con el nombre del archivo. Podría ser un poco complejo.
También sé que existen opciones del tema. Pero esto parece ser mucho para gestionar.
¿Cómo recomendarías hacer esto para facilitar la administración de Imágenes Destacadas (Tema -> Encabezado) y la facilidad de mantenimiento...

Hay muchos archivos en WordPress. Archivos de etiquetas, archivos de fechas, archivos de categorías, archivos de términos, archivos de autores. ¿A cuál archivo te refieres?
Podrías comenzar probando el plugin Taxonomy Images http://wordpress.org/extend/plugins/taxonomy-images/

Esto es antiguo, pero es el primer resultado que aparece en Google bajo este tema.
La forma en que resolví esto fue crear una nueva página. No le des el mismo nombre que tu página de archivo (a WordPress no le gustan las páginas con el mismo nombre que tu página de archivo, causa problemas), puedes llamarla de cualquier otra manera. Establece la imagen destacada y luego llámala en tu plantilla de archivo usando este código:
$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" />
Para desglosarlo:
$post_id = 8;
es el número de ID de tu nueva página.
$src = wp_get_attachment_image_src(get_post_thumbnail_id($queried_post->ID), '') ;
encuentra la imagen destacada adjunta a esta página
<img src="<?php echo $src[0]; ?>" class="img-responsive" />
muestra la imagen destacada de tu nueva página.

Podrías hacer esto mediante CSS definiendo una región de imagen de cabecera en tu archive.php y configurando una imagen de fondo en tu style.css.
O podrías usar el plugin Dynamic Headers http://wordpress.org/extend/plugins/dynamic-headers/ (funciona muy bien aunque no se ha actualizado desde 2010)

Llegando bastante tarde a esto, pero creo que este plugin responde a la pregunta original: http://wordpress.org/plugins/categories-images/
Permite que un administrador seleccione una 'imagen destacada' para una categoría/etiqueta/taxonomía específica en el panel de edición de taxonomías. Luego se puede usar en el archive.php de un tema (por ejemplo) mostrando z_taxonomy_image_url();
.
Si prefieres desarrollar tu propia solución, quizás puedas revisar el código de ese plugin como punto de partida.

Creo que deberías optar por el método manual, algo así:
- Entra en cada página de "EDITAR" categoría, y en la descripción, coloca algo como esto:
[image url="https://upload.wikimedia.org/wikipedia/commons/0/0c/Bunker_in_Albanian_Alps.jpg"]
- Obtén la imagen para la categoría:
if (is_archive()) {
if (!empty($GLOBALS['wp_query']->queried_object->description) ) {
$cat_description =$GLOBALS['wp_query']->queried_object->description);
//Nota: desde otras páginas, puedes obtener la descripción de la categoría con: get_term('1533' , 'category')->description;
preg_match('/url\=\"(.*?)\"/si', $cat_description, $new);
if(!empty($new[1])) {
$found_image= $new[1];
}
}
}
Ahora, puedes usar esa imagen en cualquier lugar, en el head
o en la página...

YOAST! Premium lo hace directamente.
Sin embargo, yo uso ACF, donde puedo crear una página de opciones en la que añadí un campo repetidor donde puedo establecer una imagen destacada para cada tipo de publicación.
Luego, con la función siguiente añadida a mi functions.php, llamo a las metaetiquetas necesarias en los archivos de tipos de publicación para los que definí una imagen destacada.
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);
