搜索全站
Google SEO 4 分钟阅读

WordPress Schema 实现方式对比:插件、主题内置还是手写 JSON-LD

对比 WordPress 上三种 schema 实现路径——SEO 插件生成、主题自带、functions.php 手写 JSON-LD,讲清各自适用场景与冲突风险,帮你选对方案不踩重复输出坑。

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

引言:同一个页面输出两份 Article 标记

站长常遇到:页面源码里出现两段 application/ld+json,一段来自 Yoast,一段来自主题。Google 不一定报错,但会浪费抓取预算,严重时因字段冲突丢失富媒体。根因是 schema 数据源不唯一。

原理分析:三种来源各自怎么工作

SEO 插件(Yoast、Rank Math、All in One SEO)在 wp_head 钩子里输出完整图谱,覆盖 Article、Breadcrumb、Organization 等;块主题(如 Twenty Twenty-Four)通过 block-template 与 theme.json 配合,在 HTML 里用微数据或自带 JSON-LD;手写方式则是你在 functions.php 用 wp_head 或 wp_footer 钩子 echo 一段 JSON。三者若同时启用,就会叠加。

保姆级实操

方案一,纯插件(推荐新手):装 Rank Math 或 Yoast,后台逐项开启需要的类型,不要再用主题自带的 schema 模块。

// 若主题自带 schema 与插件冲突,可在子主题 functions.php 关闭主题的输出
remove_action( 'wp_head', 'mytheme_output_schema', 10 );

方案二,纯手写(适合定制强需求):禁用插件与主题的 schema,自己输出。

add_action( 'wp_head', function () {
    if ( ! is_singular() ) return;
    $data = [
        '@context' => 'https://schema.org',
        '@type'    => 'Article',
        'headline' => get_the_title(),
        'author'   => [ '@type' => 'Person', 'name' => get_the_author() ],
    ];
    echo '<script type="application/ld+json">' . wp_json_encode( $data ) . '</script>';
} );

方案三,主题内置:块主题站用 Site Editor 的”模板”里加”文章信息”块,让主题管理 schema,此时关掉插件对应模块。

常见踩坑

  1. 插件和主题同时开,产生两份标记,GSC 出现”重复字段”警告。
  2. 手写时忘记 wp_json_encode,直接拼接字符串导致引号转义出错、JSON 非法。
  3. 案例:某外贸站同时用 Rank Math 和主题自带 Product schema,Google 有时取插件版、有时取主题版,价格时而显示时而消失。最终决定以 Rank Math 为准,子主题里 remove_action 掉主题输出,GSC 富媒体报错归零。
  4. 在 wp_footer 输出导致主题脚本已渲染,部分主题解析顺序问题。
  5. 硬编码作者名,换作者后 JSON 不更新,建议用 get_the_author() 动态取。

总结

判断标准:新手用插件、强定制用手写、块主题优先用主题内置,但三者只能留一个数据源。行动清单:先查页面源码有几段 ld+json → 定位多余来源 → remove_action 或后台关闭 → 保留唯一数据源 → GSC 验证。详见避免结构化数据重复输出的方案。

U
UFO_PF作者

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

留下你的想法

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