首页课件丨教程安装教程WordPressSitemapXML站点地图自定义教程

WordPressSitemapXML站点地图自定义教程

从 WordPress 5.5 开始,引入了一项新功能,将基本的、可扩展的XML 站点地图功能添加到 WordPress核心。在默认情况下,它仅提供URL(loc)标记,所以很多站长认为它过于简单而使用其它插件替代,本文将介绍如何免插件自定义 WordPress Sitemap ,以实现更完整的XML地图功能。

WordPress 自带的Sitemap地址为:/wp-sitemap.xml

站点地图 XML 格式概述

站点地图必须:

  • 以开始标签开始,以结束标签结束:<urlset></urlset>
  • 在标签中指定命名空间(协议标准) 。
  • 包括每个url的<url>条目,作为父XML标记。
  • 为每个<url>父标记包含一个<loc>子条目。

XML 站点地图示例:

<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.zhanzhangb.com/</loc> <lastmod>2022-10-10</lastmod> <changefreq>monthly</changefreq> <priority>0.8</priority> </url> </urlset> 

XML 标记定义

向 WordPress Sitemap XML 站点地图中添加其它标记

WordPress 自带的 Sitemap 虽然默认情况下很简单,但可以使用各种过滤器来完全自定义它。最终使它不亚于任何专业的XML生成插件。

如果网站文章或博客文章会偶尔更新,那么添加<lastmod>标记非常重要,这会让搜索引擎知道URL对应的网页在什么时候做了修改。

/** 向Sitemap添加URL最后修改日期 教程:https://www.zhanzhangb.com/5073.html */ add_filter('wp_sitemaps_posts_entry', function( $entry, $post ) { $entry['lastmod'] = $post->post_modified_gmt; return $entry; }, 10,2 );
/** 向Sitemap添加URL页面内容更新频率 教程:https://www.zhanzhangb.com/5073.html */ add_filter('wp_sitemaps_posts_entry', function( $entry, $post ) { $entry['changefreq'] = 'Weekly'; //设置为每周更新,此处的值可根据需要修改 return $entry; }, 10,2 );
  • always:每次
  • hourly:每小时
  • daily:每天
  • weekly:每周
  • monthly:每月
  • yearly:每年
  • never:从不更新
/** 向Sitemap添加URL页面的优先级 教程:https://www.zhanzhangb.com/5073.html */ add_filter('wp_sitemaps_posts_entry', function( $entry, $post ) { $entry['priority'] = '0.7'; //取值范围0.0 - 1.0 return $entry; }, 10,2 );
/** 向Sitemap添加 lastmod、changefreq、priority 标记 教程:https://www.zhanzhangb.com/5073.html */ add_filter( 'wp_sitemaps_posts_entry', function( $entry, $post ) { $entry['lastmod'] = $post->post_modified_gmt; $entry['changefreq'] = 'Weekly'; $entry['priority'] = '0.7'; return $entry; }, 10,2 );

从 Sitemap 中排除指定帖子

/** 从 WordPress Sitemap 中排除指定帖子 教程:https://www.zhanzhangb.com/5073.html */ add_filter( 'wp_sitemaps_posts_query_args', function( $args, $post_type ) { if ( 'post' !== $post_type ) { return $args; } $args['post__not_in'] = isset( $args['post__not_in'] ) ? $args['post__not_in'] : array(); $args['post__not_in'][] = 123; // 123是要排除的帖子的ID。 return $args; }, 10,2 );

删除部分站点地图

默认情况下 WordPress Sitemap 会输出三种类型,帖子(含页面)、分类(含tag)和用户,如果要在Sitemap中删除某部分则也可以使用相应的过滤器来实现。

/** 从 WordPress Sitemap 中禁用部分列表 教程:https://www.zhanzhangb.com/5073.html */ //禁用作者列表 add_filter( 'wp_sitemaps_add_provider', function( $provider, $name ) { if ( 'users' === $name ) { return false; } return $provider; }, 10,2 ); //禁用page帖子类型的站点地图 add_filter( 'wp_sitemaps_post_types', function( $post_types ) { unset( $post_types['page'] ); return $post_types; } ); //禁用post_tag分类的站点地图 add_filter( 'wp_sitemaps_taxonomies', function( $taxonomies ) { unset( $taxonomies['post_tag'] ); return $taxonomies; } );

修改地图索引中URL数量最大值

站点地图索引最多可包含 50000 个站点地图,单个站点地图最多可包含 2000 个(可过滤的)条目。

/** 将 WordPress Sitemap 单个xml文件中帖子URL的数量限制为1000 教程:https://www.zhanzhangb.com/5073.html */ apply_filters( 'wp_sitemaps_max_urls', 1000, 'post' );

额外提示:Yoast SEO 生成的 Sitemap 是不支持<changefreq><priority>标记的,因为 Google 已明确宣称这两个标记不如<lastmod>指定更新时间,但百度及其它搜索引擎目前是支持<changefreq><priority>标记的。

All in One SEO Pack Pro 与 Rank Math SEO PRO 的站点地图均支持<changefreq><priority>标记。

声明: 1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:ceo@zunw.cn,我们将第一时间处理! 2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持 3.所有资源仅限于参考和学习,版权归原作者所有,更多请阅读网站声明。

给TA赏金
共{{data.count}}人
人已赏金
安装教程

如何为WordPress选择虚拟主机或服务器

2022-11-9 23:00:26

安装教程

华为任正非喊话“活下去”被刷屏,你的自媒体或博客蹭热点了吗?

2022-11-9 23:00:28

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
MySSL 安全签章