我们在英国经营一个博客,最近注意到当文章被点赞、分享等时,Facebook停止了提取我们的帖子描述和图片。
运行Facebook对象调试器时,我收到以下消息:
响应代码:200
必须修复的错误无法下载:无法从URL检索数据。
(如果您想亲自观看,这里有一个链接:https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fwww.heruni.com%2F)
下面是我们代码的副本——我们做错了什么?
<?php
function is_facebook(){
if(!(stristr($_SERVER["HTTP_USER_AGENT"],'facebook') === FALSE)) {
return true;
}
}
?>
<!DOCTYPE html>
<html dir="ltr" lang="en-US"<?php if(is_facebook()){echo ' xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/"';}?>>
<head>
<title><?php wp_title(''); ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="msvalidate.01" content="374D59D3C3F26F6EFC410429D512A98C" />
<?php if(is_facebook()){ ?>
<meta property="og:title" content="<?php single_post_title(''); ?>"/>
<meta property="og:type" content="article"/>
<meta property="og:image" content="<?php echo wp_get_attachment_thumb_url( get_post_thumbnail_id( $post->ID ) ) ?>"/>
<meta property="og:url" content="http://<?php echo $_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];?>"/>
<meta property="og:site_name" content="<?php bloginfo('name'); ?>"/>
<meta property="fb:app_id" content="256997234347344"/>
<?php }?>
检查页面中是否使用gzip,禁用它,然后重试。这为我修复了它。
这是Facebook为您的页面看到的标记:
https://developers.facebook.com/tools/debug/og/echo?q=http%3A%2F%2Fwww.heruni.com%2F
你不需要在这里做任何is_facebook()条件的东西——标签和命名空间应该在网络上对所有HTTP客户端可见,而不仅仅是facebook scraper。
删除所有这些条件,代码就可以工作了。