站点图标 垃圾站

使用 WordPress 内置 XML Sitemaps 替换 Google XML Sitemaps 插件

内容是王道,但是有时候酒香也怕巷子深,向搜索引擎提交 sitemap 是快速提高网站收录的最好方法之一。老头一直使用 Google XML Sitemaps 插件自动生成 sitemap.xml 站点地图。

WordPress 5.5 版本起 内置 sitemap 功能

WordPress 5.5 版本之后,核心代码已经内置 XML Sitemaps 功能,只要访问:https://网站地址/wp-sitemap.xml 就能得到当前站点的站点地图,比如 垃圾站 站点 wp-sitemap.xml:https://cyhour.com/wp-sitemap.xml

wp-sitemap.xml 是一个汇总索引性 sitemap 文件,包含所有 post_type、taxonomy 和 文章作者 sitemap 索引文件。WordPress 网站地图最多索引 50000 个条目,而每个 sitemap 文件最多只有 2000 个条目,每一个文件名以 -n 结尾区分。

如何使用 WordPress 自动生成 wp-sitemap.xml?

有了 sitemap.xml 文件,向搜索引擎提交即可让搜索引擎快速收录网站链接。亲测 Google 可以成功处理 WordPress 自动生成 wp-sitemap.xml 文件:

而百度就无法成功处理:索引型不予处理,原因见「公告栏」:

sitemap 提交方式优化公告 2020-07-08

尊敬的搜索合作伙伴:

为了提升 sitemap 文件的处理效率,即日起搜索资源平台的普通收录和死链提交工具均不再支持索引型 sitemap 文件(即 xml 文档嵌套 xml 文档)。已提交的索引型文件不予处理,且子文件会占用相应工具的配额,请及时删除已提交的索引型 sitemap 文件。感谢您的关注与支持!

解决方法:把 WordPress 自动生成的这个索引型 wp-sitemap.xml 文件里面所有 sitemap 文件链接提交到百度站长即可。

注意:如果要使用 WordPress 内置 XML Sitemaps 功能,得把 Google XML Sitemaps 插件删除,否则访问 wp-sitemap.xml 会 404。

卸载插件吧,使用 WordPress 内置 XML Sitemaps 功能就够了。

WordPress 内置 XML Sitemaps 功能优化增强

WordPress 内置 XML Sitemaps 功能蛮实用,可以省掉一个插件。不过目前该功能还比较简单,changefreq, priority, 和 lastmod 这些标签信息都没有,可以按需优化一下。

如何禁用 WordPress 内置 XML Sitemaps 功能?

如果不想使用 WordPress 内置 XML Sitemaps 功能,可以使用如下代码禁用:

//移除 WordPress XML 站点地图
add_filter( 'wp_sitemaps_enabled', '__return_false' );

代码放至主题 functions.php 文件即可。

WordPress 自带 wp-sitemap.xml 网站地图突破每页 2000 条目数量限制方法

修改主题文件 functions.php 加入以下代码,其中 6666 修改成实际需要的数据即可,比如 8888 或者 888。

add_filter( 'wp_sitemaps_max_urls', 'theme_wp_sitemaps_max_urls' );
function theme_wp_sitemaps_max_urls(){
return 6666;
}

另外,wp-sitemap.xml,最大限制 50000 条目应该是为了性能考虑,不过如果真的有需要,可以修改 wp-includes/sitemaps/class-wp-sitemaps-index.php 文件,将其中的 50000 修改为实际需要的数据条目数量即可。

不过一般修改单个 sitemap 链接 2000 条目限制就足够了,然后把拆分的 sitemap 链接提交给不支持索引型 sitemap 文件的搜索引擎(如百度)即可。

WordPress 自带 wp-sitemap.xml 网站地图增加 changefreq, priority, 和 lastmod 这些标签信息

代码放至主题 functions.php 文件即可。

add_filter( 'wp_sitemaps_posts_entry', function( $entry, $post ) {
$entry['lastmod'] = date( DATE_W3C, strtotime( $post->post_modified_gmt ) );//DATE_W3C = 'Y-m-d\TH:i:sO'
$entry['changefreq'] = 'Daily';
$entry['priority'] = '0.6';
return $entry;
}, 10, 2 );

来源:To add the last modifed date to your XML sitemap, Google wants the date in W3C format.

wp_sitemaps_users_entry / wp_sitemaps_taxonomies_entry 这两个钩子也可以使用 wp_sitemaps_posts_entry 类似方法增加 changefreq, priority, 和 lastmod 这些标签信息,wp_sitemaps_index_entry 也可以增加 lastmod 信息,不过老头折腾不来,坐等高手或者 WordPress 官方代码。