WordPress纯代码生成完整站点地图(sitemap.xml)应用

Sitemap.xml的重要性无须多讲了,虽然是小站,但站点地图必不可少的。一方面方便搜索引擎来抓取,一方面也让自己了解相应的站点情况。一图在手,小站我有。前期是使用水煮鱼的wpjam-basic插件中SEO设置中的如果博客支持并开启固定链接,自动生成 robots.txt 和 sitemap.xml来生成xml地图的。但明显存在的一个缺陷是仅生成了首页跟文章页,还有众多的文章分类页、标签页、单页面等等没有的。前期也一直想改一下,但水煮鱼的这个插件还是挺好用的,不想废掉,直接改插件的代码又大费周章(明显是不会)的。今天看到张戈的文章https://zhang.ge/4554.html 怎么去做伪静态,纯静态的,突然想到了这个方法,实践了一下,完全可行。

图1.wpjam-basic插件生成的sitemap.xml

一、PHP代码

本代码绝大部分来自于这里https://zhang.ge/4554.html ,当然也因为本地出错了一下,简单做了修改:

主要修改第11行:

<loc><?php echo get_home_url(//res.zgboke.com/wp-content/plugins/custom-plugin/img/random/10.jpg); ?></loc>

不知道为什么这里会要引入一张完全无关的图片进来,然后报错,直接删除了就行了。

二、部署:

PHP文件有了,直接访问也可以生成地图了,但是还是PHP后缀的格式,这时候需要转换成xml,而且要伪静态化,并要将原来的wpjam-basic插件生成的sitemap禁用掉。如果单纯的停用插件的SEO设置呢,倒是没有了sitemap这个功能,但同时的SEO优化也没有了。另外张戈这个sitemap.php还得另外把它静态化,还得整一次。这里就利用了“李代桃僵”的方式,找到wpjam-basic插件生成的sitemap的代码,把它屏蔽掉,然后再利用插件本身的静态化规则,生成了sitemap.xml文件到网站的根目录。

要找到插件的sitemap代码也比较简单,翻到文件夹里面,就找到了sitemap.php文件,注意到这个插件有2个同名文件的。实际生效的文件是wpjam-basic\old\template\sitemap.php这个,重命名下,再把张戈那个PHP文件复制过来。打开https://www.iappi.cn/sitemap.xml一看,已经刷新成功了。

图2.张戈代码生成的sitemap.xml

然后到百度资源平台上看看这个sitemap是不是能被识别成功。

图3.原sitemap情况
图4.新sitemap手动刷新后的情况

手动更新后,提取到了132个URL,比之前的足足多了56个。

当然,前期没有在sitemap里面的链接,搜索引擎也是同样抓取、索引的。只是这次sitemap全部给概括进来了。