傻大憨

标签: JSON-LD

共找到相关结果约1个

wordpress插入JSON-LD结构化数据

在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富结果测试工具验证你的结构化数据是否有效。