我找到了这篇文章并尝试实施上述步骤。浪费了几个小时后,我看到了上面@SMT 的评论......
我在 v2.10 中肯定不再工作了。
我的客户已经在等待此功能,因此我必须找到解决方法。
请注意:我为 WordPress 编写了此解决方案,因此您可以更改几行以使其在您的网站上运行。
让我们从我的 HTML 代码开始
包含图像和按钮的包装器:
<div class="my-image-container">
<img src="http://example.com/image.jpg">
<a href="#" class="fb-share-image">Share</a>');
</div>
在我的 JS 代码中,我将图像 url 作为参数添加到我要共享的 URL:
window.fbAsyncInit = function() {
FB.init({
appId : 'YOUR APP ID',
status : true,
cookie : true,
version : 'v2.10'
});
$( '.fb-share-image' ).click(function(e){
e.preventDefault();
var image = $(this).siblings('img').attr('src');
FB.ui(
{
method: 'share',
href: $(location).attr('href') + '?og_img=' + image,
},
function (response) {
}
);
})
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
下一步是处理 URL 参数。此代码适用于 YOAST 的 WordPress 和 WordPress SEO,但您可以简单地将其更改为与您的 CMS 一起使用。
将此添加到您的 functions.php:
add_filter('wpseo_opengraph_image',function( $img ){
if( array_key_exists( 'og_img', $_GET ) )
return $_GET['og_img'];
return $img;
});
add_filter('wpseo_opengraph_url',function( $url ){
if( array_key_exists( 'og_img', $_GET ) )
return $url . '?og_img=' . $_GET['og_img'];
return $url;
});
一般的想法是为每张图片创建一个单独的 URL,只更改 OG 参数,因此 Facebook 必须单独抓取每个图片。
为避免任何 SEO 问题,您应该在标头中添加一个指向原始 URL 的规范标签。这是complete article。