我的Wordpress网站上有一小部分PHP代码,可以为每个帖子创建OpenGraph标签。不幸的是,当我将URL复制到新的FB帖子时,Facebook没有抓取特色图片(og:image)。
只是为了澄清事件的流程:
我的用户创建了一个Wordpress帖子。
然后有人通过将链接复制到FB帖子中在Facebook上分享。 Facebook显示正确的文本,但抓取错误的og:image。
我转到对象调试器并测试Wordpress帖子。它显示没有错误和所有正确的og标签(包括正确的og:图像),但在其缩略图中显示该网站的默认(错误)图像!
然后,如果我点击Scrape New按钮,会出现正确的缩略图(与og:image标签匹配)。
现在,如果用户在Facebook中共享相同的Wordpress帖子,则FB -does-在FB帖子中显示正确的og:图像。
所以最初抓取-default-图像,但不是特色图像(即Wordpress用语中的post_thumbnail()。但是,如果我打开Facebook的对象调试器并获得一个对于页面的新刮擦,总会出现正确的图像。这已经变得乏味。
令人抓狂的是,如果我查看对象调试器进行初始刮擦,虽然显示默认图像(这是不正确的)如果我查看统计数据,Facebook表示它看到的og:image标签是正确的 - 。所以它 - 它 - 它刮掉了正确的图像,但显示的图像不正确!
我在对象调试器中看到的唯一错误是"图像可能太小。图像必须至少为200x200 ......" ...这不是真的。图像始终至少为300 x 209。
我已检查页眉中的代码是否正确生成。
我没有使用缓存插件或CDN。
所以:我怎样才能确保FB总是抓住正确的og:image,无需打开对象调试器和Scrape New。
再次说明:我在这里看到了类似的(旧的)问题,其中“回答”问题是'是为每个帖子进行新的刮擦。嗯,这不会与我的用户一起飞行。我们需要一种方法来确保新帖子显示正确的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 '<meta property="og:image:width" content="' . esc_attr( $thumbnail_src[1] ) . '"/>';
echo '<meta property="og:image:height" content="' . esc_attr( $thumbnail_src[2] ) . '"/>';
}
echo "";
}
add_action( 'wp_head', 'insert_fb_in_head', 5 );
/* Facebook ends *************/