WP分类与页面slug冲突问题 – 博客更新(七十三)

472°C 04-03-2022
最近更新于:2022-10-10 14:18:58

文章摘要chatGPT

standby chatGPT responsing..

开发到这步拖了很久,出现了个比较坑的问题:页面导航均由post类型的category输出(每个category分别使用不同模板),而每个分类页面中的内容都在php模板文件内导致更改很不方便,所以需要提供一个接口在后台像post文章一样随意更改,然后想到了PAGE页面,利用page的slug来查询wp数据库对应的category内容,即page别名(slug)和category别名(slug)同步,之后再在模板内添加查询代码即可完成数据更新同步。 问题来了,这时候想给page页面加一个评论(使用comments_template调用)却调用出了文章内的评论。所以当页面别名和分类别名重复的时候,wp默认会使用category模板(这一步调用其实没问题,因为前台基本看不出来,但相关数据调用会有很多问题,category和page的调用不一样),这时候我们再调用评论的时候就出错了。不过这些都还好,致命的是这种情况只出现在部分分类页面,也就是说还有些category和page别名冲突的也一样调用了page页面,将页面作为单独的评论页面正常调用评论,这就百思不得其解了啊.. 搞了很久才发现有些不冲突是因为category分类层级的原因,那些访问冲突slug页面正常调用评论的都不是一级分类!没错,因为博客有很多层分类,所以在调用的时候出现了偏差,属实有些蛋疼。

额外内容

现在的解决方案有把一级分类移到二级,以此类推,重新输出导航。还有个比较简单的办法,因为之前去掉了category分类目录,现在只需要把对应代码删了,然后在后台固定链接的分类前缀处填写“.”即可让wp自动区分category与page之间的关系(此方法在网上最常见,但仔细观察导航链接会发现那个.号依然存在于链接当中,即使能正常访问。所以另一个间接导致这个问题的原因就是WPML去category插件的原因,从根本上重写的category就导致了page之间的slug冲突。注意:当使用page页面时$cat变量将无法使用,届时分类模板中的部分post变量将无法使用,主要是在category中即使用了分类模板又对接了页面数据)... 暂行方案:删除wpml重写category规则 -> 设置分类固定链接为“.” -> 删掉不需要应用page类型的页面(删掉后默认使用category模板),至于导航链接中显示的“.”层级暂时无解(如果使用.后再启用wpml重写会导致page页面应用失效,需要删除wpml并取消前缀后重新启用“.”前缀)


评论留言

既来之则留之~ 欢迎在下方留言评论,提交评论后还可以撤销或重新编辑。(Valine 会自动保存您的评论信息到浏览器)