在WordPress中添加文章(Article)和面包屑导航(BreadcrumbList)的结构化数据(JSON-LD)不仅有助于搜索引擎更好地理解你的内容,还可以提升用户体验和SEO效果。
添加文章(Article)和面包屑导航(BreadcrumbList)的结构化数据(JSON-LD)
结构化数据提供了关于文章和网站结构的详细信息,帮助搜索引擎更好地理解内容的主题、作者、发布时间等。
面包屑导航的结构化数据可以出现在搜索结果中,访客能够了解网站的层级结构,提高点击率,更好的点击率可以间接提升网站在搜索引擎中的排名。
添加方法
复制以下代码到 WordPress 主题的 functions.php 文件中。
//结构化 function add_schema_tags() { if ( is_single() ) { // 只在单篇文章页面添加 $post_id = get_the_ID(); $post_date = get_the_date('c', $post_id); // 获取文章发布时间,格式为ISO 8601 $modified_date = get_the_modified_date('c', $post_id); // 获取文章最后修改时间,格式为ISO 8601 $post_title = get_the_title($post_id); // 获取文章标题 $post_url = get_permalink($post_id); // 获取文章URL $post_image = get_the_post_thumbnail_url($post_id, 'full'); // 获取文章特色图片URL $post_images = get_post_meta($post_id, '_post_images', true); // 获取文章多张图片(假设存储在自定义字段中) $post_description = get_the_excerpt($post_id); // 获取文章摘要 $author = get_the_author_meta('display_name', get_post_field('post_author', $post_id)); // 获取文章作者名称 $author_url = get_author_posts_url(get_post_field('post_author', $post_id)); // 获取文章作者URL $author_image = get_avatar_url(get_post_field('post_author', $post_id), array('size' => 96)); // 获取文章作者头像URL if (empty($post_images)) { $post_images = array($post_image); } // Article 结构化数据 $article_schema = array( '@context' => 'https://schema.org', '@type' => 'Article', '@id' => $post_url, 'url' => $post_url, 'headline' => $post_title, 'image' => $post_images, 'description' => $post_description, 'datePublished' => $post_date, 'dateModified' => $modified_date, 'author' => array( '@type' => 'Person', 'name' => $author, 'url' => $author_url, 'image' => $author_image ) ); // 获取文章所属的所有分类及其父分类 $categories = get_the_category($post_id); $category_breadcrumbs = array(); foreach ($categories as $category) { $category_breadcrumbs = array_merge($category_breadcrumbs, get_category_breadcrumbs($category)); } // 去重并排序 $category_breadcrumbs = array_unique($category_breadcrumbs, SORT_REGULAR); usort($category_breadcrumbs, function($a, $b) { return $a['position'] - $b['position']; }); // BreadcrumbList 结构化数据 $breadcrumb_schema = array( '@context' => 'https://schema.org', '@type' => 'BreadcrumbList', 'itemListElement' => array( array( '@type' => 'ListItem', 'position' => 1, 'name' => '首页', 'item' => home_url('/') ) ) ); // 添加分类面包屑 $position = 2; foreach ($category_breadcrumbs as $breadcrumb) { $breadcrumb['position'] = $position++; $breadcrumb_schema['itemListElement'][] = $breadcrumb; } // 添加文章面包屑 $breadcrumb_schema['itemListElement'][] = array( '@type' => 'ListItem', 'position' => $position, 'name' => $post_title, 'item' => $post_url ); // 将数组转换为JSON字符串 $article_json_ld = json_encode($article_schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT); $breadcrumb_json_ld = json_encode($breadcrumb_schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT); // 输出Article和BreadcrumbList JSON-LD脚本 echo '<script type="application/ld+json">' . $article_json_ld . '</script>' . "\n"; echo '<script type="application/ld+json">' . $breadcrumb_json_ld . '</script>' . "\n"; } } function get_category_breadcrumbs($category, $position = 2) { $breadcrumbs = array(); if ($category->parent > 0) { $parent = get_category($category->parent); $breadcrumbs = array_merge($breadcrumbs, get_category_breadcrumbs($parent, $position)); $position = end($breadcrumbs)['position'] + 1; } $breadcrumbs[] = array( '@type' => 'ListItem', 'position' => $position, 'name' => $category->name, 'item' => get_category_link($category->term_id) ); return $breadcrumbs; } add_action('wp_head', 'add_schema_tags');
推荐使用子主题或者 WordPress 自建插件的方式添加,可以有效避免主题升级后自定义代码丢失。
声明:本文由 秋光暖暖 收集整理并发布,如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)