WordPress, como optimizar las fotos para SEO

WordPress es una gran plataforma para blogs, pero hay ciertos aspectos que podrían funcionar un poco mejor y de una manera más sencilla, como por ejemplo en el SEO de nuestras fotos. Si en nuestro programa de retoque gráfico, como por ejemplo Adobe Lightroom, ya le ponemos el título y la descripción a la foto, sería genial que WordPress lo leyera y completara los atributos alt y title de las etiquetas de imagen el solito, pero curiosamente no lo hace bien del todo, como puede verse al subir una foto cualquiera en WordPress 3.3.2 y WordPress 3.4:

Subida normal de fotos en WordPress

Lo primero es que WordPress no rellena los campos Texto alternativo, correspondiente al atributo alt de las imágenes, y Leyenda, que sería el pie de foto. Lo ideal sería tener el Título de la foto en Leyenda y la Descripción en Texto alternativo. Para solucionar esto, añadimos el siguiente código en el archivo functions.php de nuestro theme, y asunto solucionado. Sin plugins ni tocar código del interior de WordPress:

//Mismo caption que título en fotos
function image_caption_to_title( $form_fields, $post )
{
 if ( substr( $post->post_mime_type, 0, 5 ) == 'image')
 {
   $form_fields['post_title']['value'] = ( ! $form_fields['post_title']['value'])? $post->post_title : $form_fields['post_title']['value'];
   $form_fields['post_excerpt']['html'] = str_replace('">', '">'.$post->post_title.'', $form_fields['post_excerpt']['html']);
   $form_fields['post_excerpt']['value'] = ( ! $form_fields['post_excerpt']['value'])? $post->post_title : $form_fields['post_excerpt']['value'];
   $form_fields['image_alt']['value'] = ( ! $form_fields['image_alt']['value'])? $post->post_content : $form_fields['image_alt']['value'];
   $form_fields['post_content']['value'] = ( ! $form_fields['post_content']['value'])? $post->post_content : $form_fields['post_content']['value'];
 }
 return $form_fields;
}
add_filter('attachment_fields_to_edit', 'image_caption_to_title', 11, 2 );

Corregido a partir de WordPress 3.5!

Otro problema que vemos en la pantalla es que WordPress comete un fallo de codificación de caracteres con las tildes y otros carecteres como la ñ. No se si se debe a mi propio servidor, que está configurado en español, y por eso no lo ha detectado bien, pero es un error bastante tonto y difícil de encontrar. Menos mal que su solución es muy sencilla. Añadimos el siguiente código en el fichero functions.php de nuestro theme y tendremos unas tildes preciosas en nuestros títulos y descripciones:

//Aplicar utf8_decode a los campos de exif, que da problemas</span>
<span style="color: #808080;">function modify_uploaded_file_meta_utf8out($meta, $file, $sourceImageType)</span>
<span style="color: #808080;">{</span>
<span style="color: #808080;">  $meta['credit'] = utf8_decode($meta['credit']);</span>
<span style="color: #808080;">  $meta['copyright'] = utf8_decode($meta['copyright']);</span>
<span style="color: #808080;">  $meta['title'] = utf8_decode($meta['title']);</span>
<span style="color: #808080;">  $meta['caption'] = utf8_decode($meta['caption']);</span>
<span style="color: #808080;">  return $meta;</span>
<span style="color: #808080;">}</span>
<span style="color: #808080;">add_filter('wp_read_image_metadata', 'modify_uploaded_file_meta_utf8out', 16, 3);

Con tan solo estas dos funciones, conseguiremos que de ahora en adelante nuestras fotos estén correctamente etiquetadas sin esfuerzo y así los buscadores sepan que hay en ellas, ya que mejoramos su SEO.

Si queremos completar más el alt y el title, podemos usar algún plugin como el SEO Friendly Images, pero tan solo añadirá el título del post en los atributos de la imagen. Creo que es mejor que nosotros mismos escribamos esos campos, y así poner lo que queramos.

Esta solución que muestro me parece muy correcta para mejorar el SEO de nuestras fotos en WordPress, y así espero que toda la tarde que estuve buscando como arreglar estos problemas valga para algo 😉

Subida de fotos mejorada

Actualización WordPress 3.4

Con el nuevo WordPress 3.4, los pies de foto pueden contener html, así que hay un pequeño añadido en el código para que funcione también con esta versión.

Actualización WordPress 3.5

En esta versión han corregido los errores de codificación, por lo que no hace falta la segunda función. Con añadir

function image_caption_to_title( $form_fields, $post )

es suficiente para mejorar el SEO de nuestras fotos en WordPress.

21 pensamientos en “WordPress, como optimizar las fotos para SEO

  1. jose luis lluelma

    Hola Victor, este comentario quizás sea un poco tarde…pero es ahora cuando yo lo he leído, jaja. Me ha gustado y te pregunto…., si quisiera poner todos los titulos meta menos el de “Leyenda” como debería poner el código??. Gracias y magnifico tu blog. Te sigo a partir de ahora.

    Yo también soy fotógrafo, encantado y en lo que pueda ayudarte por aquí estoy, un saludo cordial desde Rota, Cádiz.

    1. machbel Autor

      Hola!
      pues deberías comentar las dos líneas que empiezan con
      $form_fields[‘post_excerpt’], poniendo // delante.

      Con eso se salta el campo de Leyenda.

      Un saludo y un placer visitar tu web

  2. jose luis lluelma

    Hola Victor, y perdona de nuevo,

    no he entendido lo que dices, me puedes copiar el código aquí? y la pregunta es… sigue siendo vigente dicho cógido con las actualizaciones de WP a 3.5 (Rellenar Title, Alt y Descripción) (leyenda no).

    gracias y perdona mi torpeza…soy nuevo en esto de los código como ves…aunque voy aprendiendo a base de palos….jeje, GRACIAS MIL!! 😉

    1. machbel Autor

      Te pego el código:

      //Mismo caption que título en fotos
      function image_caption_to_title( $form_fields, $post )
      {
      if ( substr( $post->post_mime_type, 0, 5 ) == ‘image’)
      {
      $form_fields[‘post_title’][‘value’] = ( ! $form_fields[‘post_title’][‘value’])? $post->post_title : $form_fields[‘post_title’][‘value’];
      $form_fields[‘image_alt’][‘value’] = ( ! $form_fields[‘image_alt’][‘value’])? $post->post_content : $form_fields[‘image_alt’][‘value’];
      $form_fields[‘post_content’][‘value’] = ( ! $form_fields[‘post_content’][‘value’])? $post->post_content : $form_fields[‘post_content’][‘value’];
      }
      return $form_fields;
      }
      add_filter(‘attachment_fields_to_edit’, ‘image_caption_to_title’, 11, 2 );

      Espero que te funcione bien. Debería de funcionar correctamente en nuevas versiones, y si da fallos ya actualizo la página.
      Un día de estos espero sacar el código como plugin para que se actualice automáticamente.

      UN saludo!

  3. Jose Luis LLuelma Patino

    Hola Victor, y gracias por tus respuestas. Al final está dando que hablar el post!! genial. Quería preguntar…, el tema de optimizar, ¿¿cómo deberíamos hacerlo para páginas?? (No entradas) ¿es recomendable? Gracias saludos y abrazos, genial blog!!!

  4. Pablo Nora

    Hola Victor,

    Tengo un problema, en mi tema, (la imágenes tengo que ponerla como destacadas para que me pueda hacer bien los fragmento enriquecidos) No puedo poner el titulo por que las incluyo como destacadas…

    ¿Como podría hacer para que pudiera incluir el titulo?

    Tienes un gran blog

    Saludos!!!

    1. machbel Autor

      Hola Pablo. Para poner el título bajo las fotos tienes que modificar el theme, y según como esté hecho se haría de una u otra forma. Si quieres que te pase un presupuesto para el trabajo, escríbeme a victor@machbel.com y te digo cuanto podría ser.
      Un saludo!

    1. machbel

      Pues en functions.php debería funcionar, igual tiene conflicto con el theme o algún otro código. Si quieres escríbeme al email y te paso el presupuesto para solucionarlo.

  5. Simon

    Hola Víctor, estoy intentando rellenar los campos ‘Leyenda’ ‘Titulo Alternativo’ y ‘Descripcion’ desde LR. He rellenado todos los metadatos que podrían parecerse como ‘Titulo’ y ‘pie de ilustración’ pero solo me pasa el nombre de la foto. Sabes cual es el problema?
    Gracias

    1. machbel

      WordPress ha cambiado cosas, por lo que esté código también ha cambiado, no funcionando del todo bien en las nuevas versiones. Si quieres te puedo pasar el nuevo código, escríbeme al email. Un saludo

  6. Marisa Pérez

    Hola, yo no soy muy ducha en estos temas y necesito saber que tengo que hacer para sea visible que la foto es cortesía de un autor y el banco de fotos. yo lo he introducido a mano en la leyenda pero no creo que sea la mejor manera, ya que aunque tiene que estar visible, supongo que también quiere que se pueda enlazar con su web para quien esté interesado en adquirir fotografías de bancos de fotos.
    Cómo puedo hacerlo?
    Un saludo

    1. machbel Autor

      Hola, pues me temo que no hay más opciones que poner a mano el enlace al banco de fotos o a la foto original en sí misma. Hay plugins para WordPress que te permite insertar fotos de diferentes bancos de imágenes ya con la leyenda y todo, asi que igual te pueden servir.
      Un saludo

  7. Raul

    Hola Victor:
    Espectacular tu post. Quería preguntarte si para el posicionamiento es mejor subir las imagenes o insertarlas. A todas le pongo las etiquetas alt (Por cierto, me permite poner muchas palabras clave, pero son acosejables 8 o 18? o cuantas más mejor?). Como decia a todas las fotos, aunque las inserte desde mi banco de imagenes de google plus, les pongo las etiquetas alt y el titulo es la palabra clave que quiero, por ejemplo, carne-de-buey89.jpg . Lo que no se es si es mejor insertarlas para que cargue mejor la pagina y por posicinamiento o bien, subir cada una de las imagenes de un post.
    Un saludo y sigue así.

    1. machbel

      Lo mejor es subirlas a tu propio blog y desde ahi insertarlas, ya que a la larga te va a dar menos problemas. Un saludo

  8. Raul

    Es ok, pero y si las cojo de mi propio Google plus, es mejor?. Supongo que mientras esten en mi propio google + no desaparecen ni cambian. Simplemente era por velocidad de carga y por el posicionamiento ya que las cojo de google. Ya me dices

Deja un comentario