Cómo establecer una imagen predeterminada para los post en WordPress

WordPress tiene la característica de crear una imagen miniatura para cada post cuando se muestra en el home de la web o en las categorías. Pero que hacemos si no tenemos o se nos olvida. No tener miniatura que hace que la visualización del home se descuadre, además de parecer poco profesional tener imágenes rotas o áreas vacías en la página principal donde se suponía que debería estar la imagen en pequeño.

Hay plantillas de WordPress o Frameworks, como Genesis, que ya tiene la opción incorporada de mostrar como miniatura (si no hay imagen destacada),  la primera imagen dentro de la publicación. En este artículo, mostraré dos formas diferentes de agregar una imagen de respaldo predeterminada para los post de WordPress.

Primera, editar el archivo/s del tema en el que se muestran las miniatura de la publicación, esto puede ser (home.php, single.php, loop.php, index.php, archive.php, etc). A continuación, pegar el código siguiente dentro del bucle (loop).

<?php if ( has_post_thumbnail() ) {
 the_post_thumbnail();
 } else { ?>
 <img src="<?php bloginfo('template_directory'); ?>/images/default-image.jpg" alt="<?php the_title(); ?>" />
 <?php } ?>

Explicación: El código comprueba si la publicación tiene una miniatura especificada y, si la hay, mostrará la miniatura de la publicación. Si no se especifica ninguna miniatura de post, mostrará la imagen ‘default-image.jpg’ en la carpeta de imágenes del tema.

Este es el ejemplo básico. Obviamente, se pude ampliar con tamaños de miniaturas, clases y mucho más.

 

Segunda, usar la primera imagen del post como miniatura. Para ello tienes que abrir el archivo functions.php del tema y añadir los siguientes códigos:

//function to call first uploaded image in functions file
 function main_image() {
 $files = get_children('post_parent='.get_the_ID().'&post_type=attachment
 &post_mime_type=image&order=desc');
  if($files) :
  $keys = array_reverse(array_keys($files));
  $j=0;
  $num = $keys[$j];
  $image=wp_get_attachment_image($num, 'large', true);
  $imagepieces = explode('"', $image);
  $imagepath = $imagepieces[1];
  $main=wp_get_attachment_url($num);
  $template=get_template_directory();
  $the_title=get_the_title();
  print "<img src='$main' alt='$the_title' class='frame' />";
  endif;
 }

A continuación, editar el archivo/s del tema en el que se muestra la miniatura del post de WordPress, esto puede ser (home.php, single.php, loop.php, index.php, archive.php, etc) y pegue el código siguiente:

<?php if ( (function_exists('has_post_thumbnail')) && (has_post_thumbnail()) ) {
  echo get_the_post_thumbnail($post->ID);
 } else {
  echo main_image();
 } ?>

Explicación: Primero creamos una función que obtiene el primer adjunto de imagen para cada publicación. En el segunda parte del código, verificamos si la publicación tiene una miniatura. Si la miniatura existe, entonces mostramos la miniatura, y si no existe, entonces mostraremos el fallback.