我正在使用Wordpress,并且正在发生一种紧张的事情。我之前已经分享了一个链接,当图像改变后,它现在有了不同的图像。当Facebook共享时,它正在拍摄相同的先前图像。让我告诉你我尝试了什么程序
主管科
<meta property="og:title" content="<?php echo $blogArray['post_heading'];?>" />
<meta property="og:type" content="article" />
<meta property="og:image" content="<?php echo $blogArray['image_url'];?>" />
<meta property="og:url" content="<?php echo site_url().'?page_id=3205&id='.base64_encode($blogArray['ID']);?>" />
<meta property="og:description" content="<?php echo $blogArray['post_sort_details'];?>" />
和HTML
http://www.facebook.com/sharer.php?s=100;&p[title]=<?php echo $blogArray['post_heading'];?>&p[summary]=<?php echo $blogArray['post_sort_details'];?>&p[url]=<?php echo 'http://'.str_replace('http://','',str_replace('www.','',site_url()));?>/?p=<?php echo $blogArray['share_post_id'];?>&p[images][0]=<?php echo $blogArray['image_url'];?>" target="_blank"><img src="<?php bloginfo('template_url');?>/images/fb_static.png" border="0" class="fb" title="Share via Facebook" width="24" height="24" /></a>
但是,当我在测试文件夹上的同一个网站上尝试时,它会变得非常好。
我附上截图。
我要分享的内容
什么是从主站点共享
什么是从Beta站点和正确的站点共享
我曾经看过一个帖子在Facebook上分享。 Facebook将图像和文本保存到缓存中,甚至在更改图像和文本时,Facebook共享保留以前的身份。这是我面临的主要问题,并希望通过在分享后用当前文本和图像重新加载Facebook缓存来解决。
答案 0 :(得分:2)
林果皞是对的。您可以通过Facebook的调试工具刷新缓存。只需将URL放在您要共享的调试器工具上即可。
您也可以在站点上使用此脚本,因为您不需要转到调试器工具并手动刷新页面。以下代码自动刷新Facebook页面。
$.post(
'https://graph.facebook.com',
{
id: '[PAGE_URL]',
scrape: true
},
function(response){
console.log(response);
}
);
答案 1 :(得分:0)
我正试着解决这个问题。小时和小时的故障排除无济于事。在与我们的一位程序员谈论一个不相关的主题后,我想到了一些尝试作为远景。
令我惊讶的是,它起作用了!!!
这就是问题的原因和我的解决方案:
当您在WordPress中草稿帖子时,它会根据您文章的标题生成一个链接(除非您手动更改它)。我的文章标题包含特殊字符,但是自动生成的链接没有显示这些特殊字符,只显示连字符以替换空格。应该没事吧?错误!嵌入在WordPress平台中的元数据和代码中的某些地方是那些特殊字符,它们弄乱了Facebook从链接到的文章中提取信息的方式。这是一个问题,因为某些特殊字符会使超链接无效。
例如:
文章标题:R [eloaded] 自动生成的超链接在WordPress“永久链接”字段中显示:http://www.example.com/reloaded 实际的WordPress自动生成的超链接:http://www.example.com/r[eloaded]
这些括号将使链接无效,Facebook将无法从中提取任何信息(即图片)。
解决方案:
(1)只需手动将WordPress超链接地址更改为不包含任何特殊字符的内容(这不会更改文章的标题)。
(2)点击“更新”更改帖子以包含新的超链接。
(3)在WordPress窗口中单击“从缓存中清除”
(4)刷新您的Facebook浏览器窗口
(5)粘贴文章的新超链接
(6)享受带有预览图像和信息的Facebook帖子
旁白:不要把头发拉过Facebook,这是不值得的。 =)答案 2 :(得分:0)
我尝试了很多以编程方式清除缓存。我们可以使用facebook调试器手动清除缓存。但是,当我们在http://myurl.com/?fbrefresh=xyz之类的网址之后保留任何参数时,它会起作用。但是,手动清除缓存并不简单,我们每次都不能这样做。
最后,它已经使用了javascript。这就像我在上面提到的网址之后放置参数一样有效。
if(window.location.search.indexOf("facebook_refresh") >= 0) {
//Feature check browsers for support
if(document.addEventListener && window.XMLHttpRequest && document.querySelector) {
//DOM is ready
document.addEventListener("DOMContentLoaded", function() {
var httpRequest = new XMLHttpRequest();
httpRequest.open("POST", "https://graph.facebook.com", true);
httpRequest.onreadystatechange = function () {
if (httpRequest.readyState == 4) {
console.log("httpRequest.responseText", httpRequest.responseText);
}
};
//Default URL to send to Facebook
var url = window.location;
//og:url element
var og_url = document.querySelector("meta[property='og:url']");
//Check if og:url element is present on page
if(og_url != null) {
//Get the content attribute value of og:url
var og_url_value = og_url.getAttribute("content");
//If og:url content attribute isn't empty
if(og_url_value != "") {
url = og_url_value;
} else {
console.warn('<meta property="og:url" content=""> is empty. Falling back to window.location');
}
} else {
console.warn('<meta property="og:url" content=""> is missing. Falling back to window.location');
}
//Send AJAX
httpRequest.send("scrape=true&id=" + encodeURIComponent(url));
});
} else {
console.warn("Your browser doesn't support one of the following: document.addEventListener && window.XMLHttpRequest && document.querySelector");
}
}