一. 生搬硬套
Google Search Console提示结构化数据错误,如下图。
一直苦于找不到解决方法,这个问题就被搁置了。今天再次查看Google Search Console,这个Missing:fn错误提示特别碍眼,不得不想办法尽快解决掉。在Google中查找了很多方法,按部就班地把所有方法都试了一遍,最终还是失败了。哎,罢了,不能放弃ing,只能自己死磕想办法解决了。
二. 溯本求源
点开Misssing:fn进一步查找原因,如下图:
在photo那一项出现Gravatar,我的博客确实有开启Gravatar图像,难道是gravatar的原因?这个gravatar图像只会出现在评论里。从Google Search Console结构化数据错误提示的两个页面:/leave-a-message和/building/mail-alerts.html,都有评论,且评论中的图像都是调用Gravatar,所以才出现了错误?
三. 举一反三
曾在themegrill论坛有这样的一个帖子,和我的问题很相似:
其中有一个不错的回复,如下:
comment-author-link?评论者的链接?看来提问人是因为评论者的链接出现了missing:fn错误。解决方法是到inc/functions.php中在一行代码中加入fn类,问题就能解决。而我的问题是gravatar图像,是不是给gravatar图像增加fn类,问题就能解决?
找到htdocs/wp-content/thems/你使用的主题/inc/inc.php或者是functions.php,查找gravatar图像的代码:
// gravatar头像调用 function cn_avatar($avatar) { $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://cn.gravatar.com/avatar/$1?s=$2&d=mm" alt="avatar" class="avatar avatar-$2" height="$2" width="$2">',$avatar); return $avatar; } function ssl_avatar($avatar) { $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2&d=mm" alt="avatar" class="avatar avatar-$2" height="$2" width="$2">',$avatar); return $avatar; }
在2个class中增加fn类,记得与前面的一个类之间要空一格。
// gravatar头像调用 function cn_avatar($avatar) { $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://cn.gravatar.com/avatar/$1?s=$2&d=mm" alt="avatar" class="avatar avatar-$2 fn" height="$2" width="$2">',$avatar); return $avatar; } function ssl_avatar($avatar) { $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2&d=mm" alt="avatar" class="avatar avatar-$2 fn" height="$2" width="$2">',$avatar); return $avatar; }
四. 验证
通过结构化测试工具验证
问题解决~~~