如何禁用WordPress 5.5+自带的XML站点地图,如何自定义XML 站点地图功能

  • A+
所属分类:WordPress源码

心语家园 https://www.xinyucn.cc/ 为非盈利网站,纯公益性质,所有软件和插件均免费下载。象征性收取的少许费用,完全是为了维持网站运营,支付服务器费用。且收费有助于防止采集和拷贝。由于有些软件主题插件升级频繁,导致汉化不完全,如果你购买后发现此问题,可通过微信公众号反馈,我们将尽快完善汉化。

正文开始:

如何禁用WordPress 5.5+自带的XML站点地图,如何自定义XML 站点地图功能

WordPress 5.5 的一项主要的新功用就是自带了XML站点地图(XML SiteMap),但是很多网站此前都采用了第三方插件(比方 Google XML Sitemaps、Yoast SEO、All in One SEO Pack)来生成网站地图。这就呈现了到底是选择自带的XML站点地图功用,还是继续采用第三方插件的问题。

其实,关于大多数的站点来说,采用自带的XML站点地图功用曾经足够,但是关于一些内容类型比拟复杂的站点,或者关于SEO优化很在意的朋友,可能第三方站点地图插件的设置选项愈加好用。

此外,置信很多第三方站点地图插件都会更新合理处置自带XML站点地图的抵触,所以假如你之前不断在运用第三方插件,关注一下更新记载即可。

经过插件禁用XML站点地图

你能够经过装置并激活插件 WP Disable Sitemap,即可禁用WordPress 5.5+ 自带的XML站点地图。

经过代码禁用XML站点地图

其实上面的插件也就一段简单的代码,假如你不想装置插件,能够添加下面的代码到主题的 functions.php 即可禁用。

add_filter( 'wp_sitemaps_enabled', '__return_false' );  

假如你要理解更多自定义自带XML站点地图的功用,能够查看文章《WordPress 5.5+ 如何自定义XML 站点地图功用【开发者】》

在WordPress 5.5中,引入了一项新功用,该功用将根本的、可扩展的 XML网站地图功用添加到 WordPress 中心中。

固然搜索引擎能够从站点内和其他站点的链接中发现页面,但是站点地图经过允许搜索引擎蜘蛛快速、全面地辨认站点地图中包含的一切网址并运用关联的元数据来学习有关这些网址的其他信号,从而对这种办法停止了补充。

本文细致引见了开发人员能够自定义XML 站点地图功用的各种办法。例如,假如您正在开发具有某些相似功用的插件,那么本文将向您展现如何将其与中心的新站点地图功用集成。

关键要点

在WordPress 5.5中,WordPress将导出一个站点地图索引文件/wp-sitemap.xml。这是主要的XML文件,其中包含WordPress网站公开的一切站点地图页面的列表。

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

默许状况下,将为一切公开和可公开查询的文章类型和分类、以及作者存档,当然还有网站的主页创立站点地图。

WordPress自动创立的robots.txt文件将援用XML站点地图索引,以便搜索引擎能够轻松找到。

技术请求

在前端渲染站点地图需求SimpleXML PHP扩展。假如此扩展名不可用,将显现错误音讯,而不是站点地图,并且会发送HTTP状态代码501(“未完成”)。

配置站点地图行为

添加自定义站点地图

WordPress提供开箱即用的内置内容类型(如页面和作者存档)的站点地图。假如您要开发的插件添加了除那些规范功用之外的自定义功用,或者只是想在您的网站上包含一些自定义网址,则添加自定义站点地图提供程序可能是有意义的。

为此,您需求做的就是创立一个自定义PHP类,用于扩展中心中的笼统类WP_Sitemaps_Provider。然后,您能够运用该wp_register_sitemap_provider()功用停止注册。示例如下:

add_filter(  
	'init',  
	function() {  
		$provider = new Awesome_Plugin_Sitemaps_Provider();  
		wp_register_sitemap_provider( 'awesome-plugin', $provider );  
	}  
);  

提供者将担任获取一切站点地图和站点地图条目,并肯定分页。

删除某些站点地图

现有3种适用于WordPress对象类型(如文章,分类法和用户)的站点地图提供程序。假如要删除其中之一(例如“用户”提供程序),则能够应用wp_sitemaps_add_provider 过滤器来删除。示例如下:

add_filter(  
	'wp_sitemaps_add_provider',  
	function( $provider, $name ) {  
		if ( 'users' === $name ) {  
			return false;  
		}  
  
		return $provider;  
	},  
	10,  
	2  
);  

相似地,假如要禁用特定文章类型或分类法的站点地图生成,请分别运用wp_sitemaps_post_typeswp_sitemaps_taxonomies过滤器。

示例:为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网址(loc)标志是必需的。一切其他标志(例如changefreqpriority)都是站点地图协议中的可选标志,通常不会被搜索引擎运用,这就是WordPress仅列出网址自身的缘由。假如开发人员的确愿意,他们依然能够添加这些标签。

您能够运用wp_sitemaps_posts_entrywp_sitemaps_users_entrywp_sitemaps_taxonomies_entry过滤器额外添加标签,比方changefreqprioritylastmod到站点地图的当个网址中。

示例:添加文章的最后修正日期

add_filter(  
	'wp_sitemaps_posts_entry',  
	function( $entry, $post ) {  
		$entry['lastmod'] = $post->post_modified_gmt;  
		return $entry;  
	},  
	10,  
	2  
);  

同样,您能够运用wp_sitemaps_index_entry过滤器在站点地图索引上添加lastmod。留意:站点地图索引(sitemap index)不支持sitemaps protocal

尝试添加任何不受支持的标签将招致_doing_it_wrong通知。

从站点地图中扫除单个帖子

假如您正在开发一个允许将特定文章或页面设置为noindex的插件,则最好也将其从站点地图中扫除。

wp_sitemaps_posts_query_args过滤器可用于从站点地图中扫除特定帖子。示例如下:

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 is the ID of the post to exclude.  
		return $args;  
	},  
	10,  
	2  
);  

完整禁用站点地图功用

假如您更新WordPress 后台 设置 - 阅读 的“对搜索引擎的可见性”设置以阻止搜索引擎将您的网站编入索引,则站点地图将被禁用。您还能够运用wp_sitemaps_enabled过滤器掩盖它。示例如下:

add_filter( 'wp_sitemaps_enabled', '__return_false' );  

留意:这样做不会删除用于站点地图的重写规则,由于在禁用站点地图时,为了发送恰当的响应,需求运用它们。

图片/视频/新闻站点地图

WordPress当前完成并支持sitemaps.org上定义的中心Sitemaps格式。此功用未涵盖站点地图扩展名,例如图像、视频和新闻站点地图,由于它们通常仅对少数网站有用。在将来的WordPress版本中,可能会添加过滤器和挂钩以启用此类功用。目前,这仍将留给插件来施行。

新增的类和函数

在撰写本文时,以下是引入的新类和函数的完好列表。

函数:

  • wp_sitemaps_get_server –检索当前的Sitemaps效劳器实例。
  • wp_get_sitemap_providers –获取站点地图提供程序的数组。
  • wp_register_sitemap_provider –注册新的站点地图提供程序。
  • wp_sitemaps_get_max_urls –获取站点地图的最大网址数。

类:

  • WP_Sitemaps –担任设置重写和注册一切提供程序的主类。
  • WP_Sitemaps_Index –构建站点地图索引页面,该页面列出了一切站点地图的链接。
  • WP_Sitemaps_Provider –其他站点地图提供程序扩展的基类,并包含共享功用。
  • WP_Sitemaps_Registry –处置注册站点地图提供程序。
  • WP_Sitemaps_Renderer –担任依据站点地图协议将站点地图数据呈现为XML。
  • WP_Sitemaps_Stylesheet –此类提供XSL款式表来设置一切站点地图的款式。
  • WP_Sitemaps_Posts –为“文章”对象类型及其子类型(自定义文章类型)构建站点地图。
  • WP_Sitemaps_Taxonomies –为“分类法”对象类型及其子类型(自定义分类法)构建站点地图。
  • WP_Sitemaps_Users –为“用户”对象类型构建站点地图。

可用的挂钩和过滤器

在撰写本文时,以下是可用钩子和过滤器的完好列表。

常规:

  • wp_sitemaps_enabled –过滤能否启用XML Sitemap。
  • wp_sitemaps_max_urls –过滤站点地图上显现的URL的最大数量。
  • wp_sitemaps_init –初始化站点地图时触发。
  • wp_sitemaps_index_entry –过滤站点地图索引的站点地图条目。

提供者:

  • wp_sitemaps_add_provider –在添加站点地图提供程序之前对其停止过滤。
  • wp_sitemaps_post_types –过滤要包含在站点地图中的文章类型列表。
  • wp_sitemaps_posts_entry –过滤单个文章的站点地图条目。
  • wp_sitemaps_posts_show_on_front_entry –当“show_on_front”选项等于“posts”时,过滤主页的站点地图条目。
  • wp_sitemaps_posts_query_args –过滤帖子类型站点地图查询的查询参数。
  • wp_sitemaps_posts_pre_url_list –在生成帖子URL列表之前将其过滤(短路)。
  • wp_sitemaps_posts_pre_max_num_pages –在生成最大页面(短路)之前对其停止过滤。
  • wp_sitemaps_taxonomies –过滤分类法列表以包含在站点地图中。
  • wp_sitemaps_taxonomies_entry –过滤单个分类词的站点地图条目。
  • wp_sitemaps_taxonomies_query_args –挑选分类法站点地图查询的查询参数。
  • wp_sitemaps_taxonomies_pre_url_list –在生成分类法URL列表之前将其过滤(短路)。
  • wp_sitemaps_taxonomies_pre_max_num_pages –在生成最大页面(短路)之前对其停止过滤。
  • wp_sitemaps_users_entry –过滤单个用户的站点地图条目。
  • wp_sitemaps_users_query_args –过滤用户站点地图查询的查询参数。
  • wp_sitemaps_users_pre_url_list –在生成URL(短路)之前过滤用户URL列表。
  • wp_sitemaps_users_pre_max_num_pages –在生成最大页面(短路)之前对其停止过滤。

款式表:

  • wp_sitemaps_stylesheet_css–过滤站点地图款式表的CSS。
  • wp_sitemaps_stylesheet_url –过滤站点地图款式表的URL。
  • wp_sitemaps_stylesheet_content –过滤站点地图款式表的内容。
  • wp_sitemaps_stylesheet_index_url –过滤站点地图索引款式表的URL。
  • wp_sitemaps_stylesheet_index_content –过滤站点地图索引款式表的内容。

更多信息,请关注官方文章。

从2021年1月1日开始,本站所有资源必须注册登陆后才能下载,全部免费。10家园币=1元人民币。如果你不想花钱,可以通过每天登陆、签到或邀请注册等方式免费获得家园币。
weinxin
官方微信公众号
扫一扫关注微信公众号,如果你觉得本站帮到了你,请通过下面的赏字按钮捐赠本站,谢谢!

发表评论

您必须登录才能发表评论!