我有一小段代码,可以为每篇文章创建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 *************/