在WordPress中添加JSON-LD结构化数据主要有三种方法:使用专用插件(最省心)、手动添加到主题文件(更灵活)、或利用现有SEO插件功能。
方法一:使用专用插件(推荐,无需代码)
如果你的主要需求是快速、无代码地实现常见Schema类型,安装专用插件是最佳选择。以下是一些高质量的免费插件:
1.AgilePress Schema JSON-LD Block
这是一个Gutenberg区块插件,让你可以在编辑器侧边栏直接配置JSON-LD,支持文章/页面的动态占位符(如{{title}}、{{excerpt}})和ACF字段。
特点:提供本地商家、组织、FAQ等模板,实时验证JSON有效性,数据通过wp_head输出。
适用场景:习惯使用块编辑器、需要精细控制单篇文章Schema的用户。
2.Schema Guru
一个轻量级但功能全面的结构化数据插件,支持全局或单篇文章分配Schema类型。
支持的Schema类型:LocalBusiness、Product、Article、Job Posting、Event、Recipe、FAQ Page等。
特点:可以设置全局默认信息(如组织名称、Logo),并为每篇文章单独设置,兼容AMP。
3.Structured Content (JSON-LD)
提供多种Gutenberg区块和经典编辑器短代码,方便在内容中插入特定类型的结构化数据。
支持类型:FAQPage、JobPosting、Recipe、Event、Course、Person等。
特点:可以选择仅输出JSON-LD,或以可见HTML + JSON-LD的方式呈现。
4.DataStackLogic Schema Manager
专注于Organization和LocalBusiness的核心Schema输出,同时提供强大的FAQ管理和AI爬虫控制功能。
特点:可批量导入FAQ,支持一键配置针对GPTBot、ClaudeBot等15种AI爬虫的访问规则。
适用场景:对本地商家SEO和AI搜索引擎优化有较高需求的站点。
5.Pointalize FAQ Markup
一个“零配置”的插件,专门用于FAQ页面。
工作原理:只需在文章/页面中使用WordPress自带的“Details”区块(或任何HTML标签)创建FAQ,插件会自动检测并生成合法的FAQ Page JSON-LD注入到页面头部。
方法二:手动添加代码(开发者适用)
如果你不想使用额外插件,或者需要实现高度定制化的Schema,可以将代码添加到主题的functions.php文件中。Google推荐使用wp_add_inline_script来注入JSON-LD,因为它能更好地避免缓存插件导致的问题。
代码示例:为文章页动态生成Article Schema
add_action('wp_enqueue_scripts', 'add_custom_json_ld_script');
function add_custom_json_ld_script() {
// 仅在单篇文章页面执行
if (is_single()) {
// 获取必要的数据
$title = get_the_title();
$excerpt = get_the_excerpt();
$author_name = get_the_author();
$date_published = get_post_time('c', true);
$date_modified = get_post_modified_time('c', true);
$post_url = get_permalink();
// 获取特色图片URL
$image_url = '';
if (has_post_thumbnail()) {
$image = wp_get_attachment_image_src(get_post_thumbnail_id(), 'full');
$image_url = $image[0];
}
// 构建JSON-LD数组
$json_ld_data = array(
'@context' => 'https://schema.org',
'@type' => 'Article',
'headline' => $title,
'description' => wp_strip_all_tags($excerpt),
'author' => array(
'@type' => 'Person',
'name' => $author_name,
),
'datePublished' => $date_published,
'dateModified' => $date_modified,
'mainEntityOfPage' => array(
'@id' => $post_url,
),
'url' => $post_url,
);
// 如果有图片,则添加到数组中
if (!empty($image_url)) {
$json_ld_data['image'] = array(
'@type' => 'ImageObject',
'url' => $image_url,
);
}
// 将数组编码为JSON字符串
$json_ld = json_encode($json_ld_data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
// 使用wp_add_inline_script注入
wp_add_inline_script('wp-i18n', $json_ld, 'before');
}
}
代码说明:
使用wp_add_inline_script(‘wp-i18n’,$json_ld,’before’)将JSON-LD注入到页面中,这个方法比直接add_action(‘wp_head’)更可靠。
所有数据都通过WordPress函数动态获取,确保与页面内容严格一致。
author使用嵌套对象格式,而不是纯字符串。
mainEntityOfPage通常直接使用当前页面的URL作为@id。
如果你需要在特定页面类型(如页面、首页)输出其他Schema类型,可以修改is_single()条件判断,并调整@type和相关属性。
方法三:使用SEO插件内置功能
如果你已经安装了Yoast SEO、Rank Math等主流SEO插件,它们本身就提供了强大的结构化数据功能。这些插件通常会自动输出基础的Organization、WebSite和Article Schema。
Rank Math:你可以在其设置中调整每个帖子/页面的Schema类型(如将页面设为WebPage而不是Article),或通过rank_math/json_ld过滤器进行自定义修改。
Yoast SEO:同样支持多种Schema类型的自动生成和手动配置,通常能满足大多数标准需求。
如何选择?
| 你的需求 | 推荐方案 |
|---|---|
| 零代码,快速实现常见类型(如文章、本地商家) | 使用 Schema Guru 或 Rank Math 等 SEO 插件内置功能。 |
| 需要在内容中灵活插入 FAQ、Recipe、Event | 使用 Structured Content 或 AgilePress Schema JSON-LD Block 插件。 |
| 开发者,需要完全自定义所有 Schema 内容 | 采用 手动代码 方式,使用 wp_add_inline_script 添加。 |
| 需要批量管理 FAQ Schema 或控制 AI 爬虫 | 使用 DataStackLogic Schema Manager。 |
无论使用哪种方法,添加完成后,都建议使用Google富结果测试工具验证你的结构化数据是否有效。