解决Google中短的元说明问题

今天在Google的网站管理员工具里看到有三个”短的元说明”的提示,点进去一看,有三个页面的元说明的确都很短,不超过20个字。可以仔细一看文章链接,应该这些文章的元说明不会这么短才是呀?

这里解释一下什么说”元说明”,元说明其实是一段描述性信息,主要用来简要描述一个页面的内容。当其它人在Google搜索到你的页面时,如果你提供了元说明文字,则Google会把你提供的元说明显示给用户。因此,元说明其实对用户决定是否造访你的网站有很大影响,如果元说明和用户所搜索的内容不符时,或者对用户吸引力不够时,用户当然不会访问你的网页。

在我WordPress的主题里,如果文章提供了摘要文本的话,会自动把这段摘要文本作为元说明放在页面中。例如,在我的主题模板中,有类似下面这样的话:

<?php
if ($post->post_excerpt) {
    $description     = $post->post_excerpt;
} else {
    $description = substr(strip_tags($post->post_content),0,220);
} ?>
<meta name="description" content="<?php echo $description; ?>" /> 

这段话的意思如果本文的摘要存在,就把搞要作为本文的元说明,否则就把该文章的前220个字符作为元说明。

检查一下那三篇提示”短元说明”的文章,在它们的摘要里,都出现了字符,看来是这个干扰了Google,它遇到第一个双引号时,就以为content属性的内容结束了。

知道了原因,改起来就容易了,只需要把这句话改一下:

<meta name="description" content="<?php echo htmlspecialchars($description, ENT_QUOTES); ?>" /> 

函数htmlspecialchars()会把摘要信息中的HTML特殊字符,例如<, >, "等都转换HTML中的entity名称,避免它们扰乱HTML文本。

这个问题,其实在我写wp-posturl插件时就遇到过了,现在又遇到了一次。看来以后在HTML属性内部使用PHP代码时,一定要记得转换特殊HTML字符。

“解决Google中短的元说明问题”的5个回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注