Hacer que Facebook elija la imagen correcta

Hacer que Facebook elija la imagen correcta

En más de una ocasión te habrás encontrado con que cuando vas a compartir un post de WordPress en Facebook, la imagen en miniatura o thumbnail no se elige correctamente. En lugar de eso, Facebook selecciona una imagen aparentemente al azar y sin sentido alguno, no tiene por qué tener siquiera relación con el post y puede ser incluso una imagen que estés utilizando en algún fondo.

Facebook elija la imagen correcta

Este efecto se nota sobre todo si estás utilizando el botón ‘Send’ en lugar del clásico de Compartir. Con el botón de Compartir al menos tienes la opción de seleccionar la imagen pasando por una galería de miniaturas hasta dar con la correcta, pero el botón de Send no llega a tanto, algo incomprensible teniendo en cuenta que es el que desde Facebook están intentando generalizar sin mucho éxito. No me extraña.

Solucionar esto pasa por hacer más inteligente a Facebook, algo que ya parece imposible, o bien indicarle claramente cuál es la imagen que debe seleccionar para cada post.

Para ello, puedes utilizar un código especial que ayude a Facebook a utilizar la imagen correcta. Este código debe ir insertado en la cabecera, es decir, en el header.php, justo delante de donde se carga wp_head().

El código es el siguiente:

<!– Begin FB Sharing for WP by Chad Von Lind. Get the latest code here: http://vonlind.com/?p=539  –>

<?php

$thumb = get_post_meta($post->ID,’_thumbnail_id’,false);

$thumb = wp_get_attachment_image_src($thumb[0], false);

$thumb = $thumb[0];

$default_img = get_bloginfo(‘stylesheet_directory’).’/images/default_icon.jpg’;

 

?>

 

<?php if(is_single() || is_page()) { ?>

<meta property=”og:type” content=”article” />

<meta property=”og:title” content=”<?php single_post_title(”); ?>” />

<meta property=”og:description” content=”<?php

while(have_posts()):the_post();

$out_excerpt = str_replace(array(“\r\n”, “\r”, “\n”), “”, get_the_excerpt());

echo apply_filters(‘the_excerpt_rss’, $out_excerpt);

endwhile; ?>” />

<meta property=”og:url” content=”<?php the_permalink(); ?>”/>

<meta property=”og:image” content=”<?php if ( $thumb[0] == null ) { echo $default_img; } else { echo $thumb; } ?>” />

<?php  } else { ?>

<meta property=”og:type” content=”article” />

<meta property=”og:title” content=”<?php bloginfo(‘name’); ?>” />

<meta property=”og:url” content=”<?php bloginfo(‘url’); ?>”/>

<meta property=”og:description” content=”<?php bloginfo(‘description’); ?>” />

<meta property=”og:image” content=”<?php  if ( $thumb[0] == null ) { echo $default_img; } else { echo $thumb; } ?>” />

<?php  }  ?>

<!– End FB Sharing for WP –>

Una vez insertado el código puedes probar su resultado, pero debes tener en cuenta un punto importante. Si pruebas con posts que ya tienes escritos, es posible que no funcione, porque Facebook ya tiene en su caché la imagen que consideró correcta para compartir en su momento. Sin embargo, si pruebas con posts nuevos debería funcionar.