搜索全站
Google SEO 17 分钟阅读

Article 结构化数据完整标注教程:文章页必填与推荐字段全解

文章页的 Article schema 看着简单,字段填错却会让整段标注失效。本文逐字段讲清必填与推荐项,给出 WordPress 动态生成 JSON-LD 的完整实现,并说明常见校验错误的修法。

U
UFO_PF 2026-04-20 · 阅读 17 分钟
Ar GOOGLE SEO
阅读提示
本文约 6,540 字,预计阅读 17 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:标注写了,GSC 里却显示 0 个条目

一个 WordPress 博客给所有文章都输出了 Article 的 JSON-LD,代码看起来和官方示例一模一样。但 GSC 的增强功能报告里,文章类型显示“已检测到 0 个条目”,或者检测到了但伴随着一堆「缺少字段 headline」「缺少字段 image」的报错。

这类问题几乎全部出在字段的取值而不是字段的存在:写了 headline 但长度超过 110 字符、写了 dateModified 但格式不是 ISO 8601、写了 image 但图片被 robots 屏蔽或尺寸小于 Google 要求。JSON 语法合法不等于 Google 认可——语法校验器和 Google 的检测是两回事。

原理分析:Article 的三个子类型与字段约束

Article 有三个常用子类型:Article(通用)、NewsArticle(新闻类)、BlogPosting(博客文章)。Google 对它们的富媒体要求基本一致,选择原则是按内容性质选最贴切的那个:博客用 BlogPosting,资讯站用 NewsArticle,不确定用 Article。

必填字段(缺少则不识别):

  • headline:文章标题,Google 建议不超过 110 字符
  • image:至少一张配图,建议 1200px 宽以上,且可匿名抓取
  • datePublished:首次发布时间,ISO 8601 格式,带时区
  • dateModified:最后修改时间,同上(Google 用它判断内容新鲜度)
  • author:作者,推荐用 Person 对象并带 name(也可以是 Organization)
  • publisher:发布方,必须是 Organization,且推荐包含 logo(ImageObject)
  • mainEntityOfPage:指向该页面的 WebPage,用于明确实体关系

推荐字段: description、articleSection、inLanguage、wordCount、keywords、articleBody。其中 wordCount 与 articleBody 对内容理解有帮助,但会让 JSON 体积变大,按需使用。

字段 常见错误 正确取值
headline 超过 110 字符、包含站点名后缀 只写标题本身
image 相对路径、被 robots 屏蔽、尺寸过小 绝对 URL,≥1200px 宽
datePublished 2026/04/02 或时间戳 2026-04-02T09:14:22+08:00
dateModified 与发布时间相同且从不更新 真实修改时间
author 只写字符串 Person 对象,带 name 与 url
publisher 缺失 logo Organization + logo 的 ImageObject

保姆级实操

步骤 1:确认主题或插件没有重复输出。 Yoast SEO、Rank Math、All in One SEO 都会自动输出 Article schema。开启其中一个插件就不要自己再输出一份,重复的同类标注会让 Google 无法判断该用哪个。如果确实要自定义,先在插件里关掉文章 schema。

步骤 2:确认已有关联的实体标注。 文章页的 publisher 应与首页的 Organization 是同一个实体(用相同的 @id 引用)。这部分与 Google 结构化数据入门 讲的是同一套图结构。

步骤 3:一份完整的 Article JSON-LD 示例:

{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "@id": "https://www.example.com/blog/google-seo-guide/#article",
  "isPartOf": { "@id": "https://www.example.com/blog/google-seo-guide/" },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://www.example.com/blog/google-seo-guide/"
  },
  "headline": "WordPress 站点接入 Google Search Console 的完整流程",
  "description": "从资源类型选择、DNS 验证到站点地图提交,逐步骤说明 WordPress 站点接入 GSC 时的关键决策点。",
  "image": {
    "@type": "ImageObject",
    "url": "https://www.example.com/wp-content/uploads/2026/04/gsc-cover.jpg",
    "width": 1200,
    "height": 675
  },
  "datePublished": "2026-04-02T09:14:22+08:00",
  "dateModified": "2026-04-18T16:30:00+08:00",
  "inLanguage": "zh-CN",
  "wordCount": 2380,
  "articleSection": "Google SEO",
  "author": {
    "@type": "Person",
    "name": "李工",
    "url": "https://www.example.com/author/ligong/"
  },
  "publisher": {
    "@type": "Organization",
    "@id": "https://www.example.com/#organization",
    "name": "迷芒飞",
    "logo": {
      "@type": "ImageObject",
      "url": "https://www.example.com/wp-content/uploads/2026/01/logo.png",
      "width": 512,
      "height": 512
    }
  }
}

步骤 4:在 WordPress 里动态生成。 下面这段代码用真实的核心函数取值,只在单篇文章页输出,并自动处理日期格式与特色图:

add_action( 'wp_head', function () {
    if ( ! is_singular( 'post' ) ) {
        return;
    }
    $post_id = get_queried_object_id();

    // 有 SEO 插件输出 schema 时请直接 return,避免重复标注
    if ( defined( 'WPSEO_VERSION' ) || class_exists( 'RankMath' ) ) {
        return;
    }

    $thumb_id  = get_post_thumbnail_id( $post_id );
    $image_url = $thumb_id ? wp_get_attachment_image_url( $thumb_id, 'full' ) : '';
    if ( ! $image_url ) {
        return; // image 是必填字段,没有配图就不输出
    }

    $author_id   = (int) get_post_field( 'post_author', $post_id );
    $author_name = get_the_author_meta( 'display_name', $author_id );
    $author_url  = get_author_posts_url( $author_id );

    $data = [
        '@context'         => 'https://schema.org',
        '@type'            => 'BlogPosting',
        '@id'              => get_permalink( $post_id ) . '#article',
        'mainEntityOfPage' => [
            '@type' => 'WebPage',
            '@id'   => get_permalink( $post_id ),
        ],
        'headline'         => mb_substr( get_the_title( $post_id ), 0, 110 ),
        'description'      => wp_strip_all_tags( get_the_excerpt( $post_id ) ),
        'image'            => [
            '@type'  => 'ImageObject',
            'url'    => $image_url,
            'width'  => wp_get_attachment_image_src( $thumb_id, 'full' )[1] ?? 1200,
            'height' => wp_get_attachment_image_src( $thumb_id, 'full' )[2] ?? 675,
        ],
        'datePublished'    => get_the_date( DATE_W3C, $post_id ),
        'dateModified'     => get_the_modified_date( DATE_W3C, $post_id ),
        'inLanguage'       => get_bloginfo( 'language' ),
        'author'           => [
            '@type' => 'Person',
            'name'  => $author_name,
            'url'   => $author_url,
        ],
        'publisher'        => [
            '@type' => 'Organization',
            '@id'   => home_url( '/' ) . '#organization',
            'name'  => get_bloginfo( 'name' ),
        ],
    ];

    echo '<script type="application/ld+json">' .
         wp_json_encode( $data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE ) .
         '</script>' . "\n";
}, 20 );

步骤 5:验证输出。 用 curl 抓页面源码确认 JSON 出现在 HTML 里(而不是靠 JS 插入),确认日期是 DATE_W3C 格式(等价 ISO 8601),确认图片 URL 是绝对路径。

步骤 6:用两个工具校验。 富媒体结果测试工具看 Google 视角的识别结果,Schema.org 校验器看语法。两个都通过才算合格。

步骤 7:在 GSC 里跟踪。 部署几天后看「增强功能 → 文章」的条目数与错误列表,按错误类型批量修。

常见踩坑

  1. SEO 插件与自定义代码双重输出。 Google 会看到两份冲突的 Article 标注。
  2. headline 带了站点名后缀。 建议控制在 110 字符内且只写标题。
  3. 没有特色图就输出了一份不带 image 的标注。 必填字段缺失,整段作废,不如不输出。
  4. 日期用 get_the_date('Y-m-d') 而非 DATE_W3C。 缺时区,可能被判无效。
  5. publisher 不带 logo。 Google 推荐字段,缺失会影响展现质量。
  6. 图片被 robots.txt 屏蔽。 校验通过但 Google 检测失败,是最难排查的一类。
  7. 案例: 一个站点的文章 schema 长期报错「缺少字段 image」,但源码里明明有 image。排查后发现:特色图存在媒体库里,但主题输出的 url 是 CDN 的相对路径(/wp-content/uploads/...),且该 CDN 域名与站点域名不同、又被 robots 屏蔽。改成完整绝对 URL 并放开 CDN 域名的抓取后,报错当天清零。校验器只看语法,Google 还要能真的抓到那张图。

总结

Article 标注的落地顺序:确认没有重复输出 → 取到真实的特色图绝对 URL → 用 DATE_W3C 输出日期 → 补全 author 与 publisher(publisher 用 @id 复用首页 Organization)→ 服务端直出 JSON-LD → 用富媒体测试工具与 Schema.org 校验器双重验证 → 在 GSC 增强功能报告里跟踪条目数与错误。判断标准很简单:GSC 里文章类型的错误数为 0、条目数与文章总数接近。做到这两点,标注部分就合格了,剩下的展现形态由 Google 决定。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。