使用Baidu Sitemap Generator之后,发现生成的sitemap里包含我以前发表的post_type为公告的旧文章,而这些文章点进去又都是404,
这是有段时间我自定义了一个文章类型为公告(使用过hotnewspro主题的同学应该能明白,就是在adminbar的新建条目下会有"公告"一栏,在公告类型下发表的文章的post_type就是Bulletin)
但是后来我把公告栏改为抓取页面评论,之前的公告类型就扔了,但其中的文章并未从数据库中删除,因此post_type='bulletin'这个文章类型仍然存在,只是由于主题函数里删除了自定义的文章类型,所以除非再次创建bulletin文章类型,否则点进去都是404,
但Baidu Sitemap Generator生成的文件包括xml和html)都把这些公告包含进去了,如果蜘蛛爬过来又只能得到404,无疑是对seo最大的破坏了,
经过检查插件文件,找到了问题所在:
在baidu_sitemap.php的148行(定义sitemap_baidu.xml的)有一句:
AND (post_type != 'revision' AND post_type != 'attachment' AND post_type != 'nav_menu_item')
224行(定义sitemap.html的)有一句:
AND (post_type != 'revision' AND post_type != 'attachment' AND post_type != 'nav_menu_item' AND post_type != 'page')
这句查询条件的意思是抓取post_type不是revision(修订版本),attachment(附件)和nav_menu_item(菜单栏目)的文章
wordpress官方文档里有对post_type基本类型的描述,一般分为:
- page
- attachment
- revision
- nav_menu_item
这里柳城的出发点是好的,他排除了revision和nav_menu_item,以便有自定义文章类型的同学可以生成所有文章,但是如果有的同学和我一样之前删除过文章类型而又没有删除文章,就会造成输出异常了,
解决方法是把148行的改成
AND (post_type = 'post' || post_type = 'page')
224行的改成
AND (post_type = 'post')
如果存在自定义文章类型的同学,这句需要改成
AND (post_type = 'post' || post_type = 'page' || post_type = '你的自定义文章类型名称:如bulletin')
这样一来可以防止生成数据库中的冗余数据,也保证了正常文章的输出
果然是大技术宅啊……不过重写按钮重叠的问题仍在……我基本没用插件
因为我怎么看它都不重叠啊T^T…其实有的插件是不占资源的,比如这个嘻嘻
@小蝴蝶 : ……和 Hello world有什么区别
是hello Dolly吧..
@小蝴蝶 : :arrow: 好吧就是那个
XDDD
@小蝴蝶 : :han: 莫非就是改了一下源码么
其实还改了css啦 好久之前的蛋疼之作..
@小蝴蝶 : :han:
新年快乐哦~~~
新年快乐娃~魔方造好了没啊
自己动手丰衣足食啊。
@郑永 : 恩恩 捡来的比不上亲生的好啊 :xiao:
@小蝴蝶 : 刚好看到一则新闻,说一个父亲捡到一个孩子却在广播里听到有人寻这个孩子。
强大啊,技术大牛。