Facebook没有抓住正确的og:图片

时间:2016-09-19 作者:jchwebdev

我有一小段代码,可以为每篇文章创建OpenGraph标记。它似乎工作正常,但当我将URL复制到新的FB帖子中时,Facebook并没有抓到实际的特色图片。

或者更确切地说,会抓取默认图像,但不会抓取特征图像。但是,如果我打开“Facebook对象调试器”并获取新的页面抓取,则始终会显示正确的图像。这变得很乏味。

我在对象调试器中看到的唯一错误是“图像可能太小。图像必须至少为200x200…”。。。但事实并非如此。图像总是WP中等大小(我相信是300 x 209?)

我已经检查了页眉中的代码是否正确生成。

我没有使用缓存插件或CDN。

那么:我做错了什么?我如何确保FB始终捕捉到正确的og:图像。

function insert_fb_in_head() {
    global $post;
    if ( !is_singular()) //if it is not a post or a page
        return;

//echo \'<meta property="fb:admins" content="YOUR USER ID"/>\';

  echo \'<meta property="og:title" content="\' . get_the_title() . \'"/>\';
  echo \'<meta property="og:type" content="article"/>\';
  echo \'<meta property="og:url" content="\' . get_permalink() . \'"/>\';
  echo \'<meta property="og:site_name" content="example site"/>\';
  echo \'<meta property="og:description" content="\' . get_post_meta(get_the_ID(), \'_yoast_wpseo_metadesc\', true). \'"/>\';

if(!has_post_thumbnail( $post->ID )) { //the post does not have featured image, use a default image
    $default_image="http://jchmusic.com/images/default-250.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 . \'"/>\';
}
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 "";
}
 add_action( \'wp_head\', \'insert_fb_in_head\', 5 );
  /* Facebook ends *************/

1 个回复
SO网友:kaiser

虽然您可能认为WordPress中有一个错误,但实际上问题出在facebooks端。当他们已经有图像时,您需要通过他们的Open Graph Debugger(?). facebook通过Url缓存各种大小的图像。这意味着,如果您已经提供了图像,他们已经在其服务器上提供了图像,并且拒绝下载。您现在有两个选项:

使用facebook工具重新强奸,在不同的url上提供不同的图像,无论你觉得简单什么,你都应该做。