17713433920 info@mac163.com

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

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

有关此新功能的更多背景信息,请查看合并公告或相应的Trac 故障单 #50117

本文详细介绍了开发人员可以自定义此新功能的各种方法。例如,如果您正在开发具有某些类似功能的插件,则本文将向您展示如何将其与核心的新站点地图功能集成。

关键要点

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

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

默认情况下,将为所有公开和可公开查询的帖子类型和分类,以及作者档案,当然还有网站的主页创建站点地图。

robots.txtWordPress公开的文件将引用站点地图索引,以便搜索引擎可以轻松找到我。

技术要求

在前端渲染站点地图需要SimpleXML PHP扩展。如果此扩展名不可用,将显示错误消息而不是站点地图。的HTTP状态代码501(“未实现”)将被相应地发送。

配置站点地图行为

添加自定义站点地图

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

为此,您需要做的就是创建一个自定义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_types或wp_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)标记是必需的。所有其他标记(例如changefreq和priority)都是站点地图协议中的可选标记,通常不会被搜索引擎使用,因此WordPress仅列出了网址本身。如果开发人员确实愿意,他们仍然可以添加这些标签。

您可以使用wp_sitemaps_posts_entry/ wp_sitemaps_users_entry/ wp_sitemaps_taxonomies_entry过滤器额外添加标签一样changefreq,priority或lastmod在站点地图的单品。

示例:添加帖子的最后修改日期

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

同样,您可以使用wp_sitemaps_index_entry过滤器lastmod在站点地图索引上添加。注意:站点地图协议不支持站点地图索引。

尝试添加任何不受支持的标签将导致_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’ );

注意:这样做不会删除用于站点地图的重写规则,因为禁用站点地图时,为了发送适当的响应,需要使用它们。

是否想知道当前是否启用了站点地图?使用wp_sitemaps_get_server()->sitemaps_enabled()。

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

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

新的类和功能

在撰写本文时,这是此功能引入的新类和函数的完整列表。

功能:

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

类:

  • 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 –过滤站点地图索引样式表的内容。

微信二维码

微信扫描二维码联系我们!
我们在微信上24小时期待你的声音
提供外贸路由器设备产品,轻松翻墙,解答:WP主题推荐,WP网站建设,Google SEO,百度SEO,专业服务器环境搭建等!


需要提供WordPress主题/插件的汉化服务可以随时联系我们!另外成品WordPress网站以及半成品WordPress网站建设,海外Google SEO优化托管服务,百度SEO优化托管服务,Centos/Debian服务器WP专用环境搭建,WP缓存服务器搭建,我们都是你的首选,拥有多年WP开源程序服务经验,我们一直在坚持客户体验,没有最好,只有更好!
回到顶部