J'ai une image de logo, une image sélectionnée et une image dans un widget de pied de page pour une page. Au moment de poster une page sur facebook, il affiche l’image du widget de pied de page en premier et l’image du logo en deuxième et l’image sélectionnée en troisième. Comment limiter celui-ci à afficher l'image sélectionnée en premier à sélectionner comme vignette de publication?
Pour obtenir l'image souhaitée lors du partage ou de la publication d'un message sur Facebook, vous devez ajouter la balise
og:image
à l'intérieur de votre balise<head>
. Et pour Twitter, vous devez utiliserTwitter card
//Adding the Open Graph in the Language Attributes
function add_opengraph_doctype($output)
{
return $output . ' xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml"';
}
add_filter('language_attributes', 'add_opengraph_doctype');
//add Open Graph Meta Info
function insert_fb_in_head()
{
global $post;
if (!is_singular()) //if it is not a post or a page
return;
if ($excerpt = $post->post_excerpt)
{
$excerpt = strip_tags($post->post_excerpt);
}
else
{
$excerpt = get_bloginfo('description');
}
echo '<meta property="fb:app_id" content="YOUR APPID"/>'; //<-- this is optional
echo '<meta property="og:title" content="' . get_the_title() . '"/>';
echo '<meta property="og:description" content="' . $excerpt . '"/>';
echo '<meta property="og:type" content="article"/>';
echo '<meta property="og:url" content="' . get_permalink() . '"/>';
echo '<meta property="og:site_name" content="' . get_bloginfo() . '"/>';
echo '<meta name="Twitter:title" content="' . get_the_title() . '"/>';
echo '<meta name="Twitter:card" content="summary" />';
echo '<meta name="Twitter:description" content="' . $excerpt . '" />';
echo '<meta name="Twitter:url" content="' . get_permalink() . '"/>';
if (!has_post_thumbnail($post->ID))
{
//the post does not have featured image, use a default image
$default_image = "http://example.com/image.jpg"; //<--replace this with a default image on your server or an image in your media library
echo '<meta property="og:image" content="' . $default_image . '"/>';
echo '<meta name="Twitter:image" content="' . $default_image . '"/>';
}
else
{
$thumbnail_src = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'medium');
echo '<meta property="og:image" content="' . esc_attr($thumbnail_src[0]) . '"/>';
echo '<meta name="Twitter:image" content="' . esc_attr($thumbnail_src[0]) . '"/>';
}
}
add_action('wp_head', 'insert_fb_in_head', 5);
Le code va dans le fichier function.php de votre thème enfant actif (ou thème). Ou aussi dans n'importe quel plugin php.
S'il vous plaît noter: ce code fonctionnera pour Facebook et Twitter.
J'espère que cela t'aides!