最新公告
  • 欢迎您光临苏果儿博客资源站,本站QQ/微博注册登陆即送SVIP果帝会员 立即加入我们
  • WordPress教程|WordPress 5.5+ 如何自定义XML 站点地图功能【开发者】

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

    虽然搜索引擎可以从站点内和其他站点的链接中发现页面,但是站点地图通过允许搜索引擎蜘蛛快速、全面地识别站点地图中包含的所有网址并使用关联的元数据来学习有关这些网址的其他信号,从而对这种方法进行了补充。

    有关此新功能的更多背景信息,请看《WordPress 5.5 将内置可扩展的XML站点地图》。

    本文详细介绍了开发人员可以自定义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 –过滤站点地图索引样式表的内容。
    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长![email protected]
    2. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!
    3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 本站不保证所提供下载的资源的准确性、安全性和完整性,源码仅供下载学习之用!
    8. 如用于商业或者违法用途,与本站无关,一切后果请用户自负!

    苏果儿博客 » WordPress教程|WordPress 5.5+ 如何自定义XML 站点地图功能【开发者】

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    苏果儿资源博客
    一个高级程序员模板开发平台

    发表评论

    升级SVIP果帝尊享更多特权立即升级