前面我们介绍了 robots.txt 和在 WordPress 博客中如何使用,robots.txt 文件是用来限制整个站点或者目录的搜索引擎访问情况,如果要针对一个个具体的页面,怎么办呢?这个时候就用到了 robots meta 标签。
robots meta 标签
和其他的 meta 标签(如页面的描述、关键词等)一样,robots meta 标签也是放在页面的<head></head>中,专门用来告诉搜索引擎 robots 如何抓取该页的内容,具体的形式类似:
代码语言:javascript复制<html>
<head>
<title>xxx</title>
<meta name="robots" content="index,follow" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="WordPress 果酱, robots, robots meta" />
<meta name="description" content="一文详解 robots meta 标签和 WordPress 中的应用" />
</head>
<body>…</body>
</html>
robots meta 标签指令
robots meta 标签有哪些指令呢,我搜索了一圈,下面是 Google 的官方文档提供的:
指令 | 说明 |
---|---|
all | 对索引编制或内容显示无任何限制。该指令为默认值,因此明确列出时并无任何效果。 |
noindex | 不在搜索结果中显示该网页。 |
nofollow | 不追踪该网页上的链接。 |
none | 等同于 noindex, nofollow。 |
noarchive | 不在搜索结果中显示缓存链接。 |
nosnippet | 不在搜索结果中显示该网页的文本摘要或视频预览。如果有静态图片缩略图,而且它能够实现更好的用户体验,那么搜索引起仍可能显示这类缩略图。 |
max-snippet:[number] | 在该搜索结果的文本摘要中,最多只能使用 [number] 个字符。如果没有指定 [number],此指令会被忽略。0:不会显示任何摘要。等同于 nosnippet。-1:搜索引擎会选择其认为最有助于用户发现您的内容并将用户定向到您网站的摘要长度。示例:<meta name="robots" content="max-snippet:20"> |
max-image-preview:[setting] | 对于此网页在搜索结果中的图片预览,设置尺寸上限。接受的 setting 值:none:不会显示图片预览。standard:可能会显示默认图片预览。large:可能会显示较大的图片预览,最高达到视口宽度。示例:<meta name="robots" content="max-image-preview:standard"> |
max-video-preview:[number] | 此网页上的视频在搜索结果中的视频摘要时长不得超过 [number] 秒。其他支持的值:0:根据 max-image-preview 设置,最多只能使用一张静态图片。-1:没有限制。如果没有指定可解析的 [number],此指令会被忽略。示例:<meta name="robots" content="max-video-preview:-1"> |
notranslate | 不在搜索结果中提供该网页的译文。 |
noimageindex | 不将该网页上的图片编入索引。 |
unavailable_after: [date/time] | 在指定日期/时间过后,不在搜索结果中显示该网页。如果没有指定有效的 [date/time],此指令会被忽略。默认情况下,内容没有失效日期。示例:<meta name="robots" content="unavailable_after: 2020-09-21"> |
WordPress 中的应用
WordPress 5.7 之后,WordPress 增强了 robots 标签功能,首先如果博客是公开的,WordPress 会添加 max-image-preview:large
到 robots meta 指令。
<!DOCTYPE html>
<html>
<head>
<meta name="robots" content="max-image-preview:large" />
</head>
max-image-preview:large
指令让搜索引擎在搜索结果中显示大图预览,以增强站点在搜素结果中的用户体验。
另外如果站点不公开的话或者在 WordPress 搜索页面,WordPress 会在 robots meta 中输出 noindex
的指令。
WordPress 怎么实现的呢?
新的 wp_robots() 函数
WordPress 5.7 引进了用于输出 robots meta 标签的 wp_robots()
函数,WordPress 内核会在前台头部自动调用该方法,比如在 wp_head
/ login_head
/ embed_head
中,所以插件和主题无需手动调用,只有一些自己制作的页面可能可能需要手工调用。
wp_robots filter
如果我们要自定义 robots meta 标签的指令,怎么操作呢?WordPress 提供了 wp_robots
过滤器接口,它接受一个数组参数,你把需要自定义 robots meta 标签的指令,通过数组方式传递给 wp_robots
filter 即可
比如给 robots meta 标签添加 follow
指令 :
add_filter( 'wp_robots', function( $robots ) {
$robots['follow'] = true;
return $robots;
});
移除默认的 max-image-preview:large
指令:
remove_filter( 'wp_robots', 'wp_robots_max_image_preview_large' );
关于 WordPress Robots API 更详细介绍,请参考:Robots API and max-image-preview directive in WordPress 5.7