修复WordPress前后端分离时无法预览文章的问题

前言

惊喜总在不经意间来临?前段时间刚刚总结了WordPress迁移遇到的问题及解决办法,费了九牛二虎之力似乎一切都走向正轨了,今天则又冒出点新花样,待发布的文章居然不能预览!这不都是常规功能吗?难道因为我迁移之后就不好使了,根据遇到的情况分析之后发现不是这样的,这个预览一直就不好使,已经过去5年了,也是有点醉了,好像到我手里就坏了一样,其实一直就不能用,5年前别人挖的坑我也要填,我就是一个填坑勇士。

问题表现

问题最直接的表现就是文章保存草稿后,点击预览按钮跳转的不是刚刚编辑的文章预览页面,而是已发布的文章列表,很明显是跳转的链接不对,从已发布的文章链接来看,这个链接格式肯定是编辑过,通过查找资料我发现可以通过 WordPress后台菜单中的 设置 -> 固定链接 来修改固定样式,查看后发现发布链接的样式已经从 https://008ct.top/?p=123 定义为 https://008ct.top/%category%/%year%/%post_id%/ 也就是在链接中增加了分类和年份信息。

再看预览链接的样式为 https://008ct.top/?p=123&preview=true 和默认样式很相似,所以我就找了半天哪里能有修改预览样式的页面,转了一圈无果,后来发现后台的地址和前台地址设置不同,地址中多了一段 cms,完整预览格式应该为 https://008ct.top/cms/?p=123&preview=true,默认打开的地址肯定是不行的,需要修改预览链接样式,朝这个方向努力后发现可以通过钩子函数来自定义预览链接。

解决问题

我们可以使用下面这个过滤钩子preview_post_link来自定义预览链接,把下面的代码放到主题文件夹里的functions.php文件中,路径类似 /cms/wp-content/themes/xxxx/functions.php

1
2
3
4
function aw_custom_preview_link() {
return get_option('siteurl') . "/?p=" . get_the_ID() . "?preview=true";
}
add_filter('preview_post_link', 'aw_custom_preview_link');

其中 get_option('siteurl') 获取的是后台的地址,也就是 https://008ct.top/cms 这部分,如果想获取前台的地址可以使用 get_option('home'),这些都是在WordPress后台 设置 -> 常规 页面里设置的,修改过后无需重启项目,直接访问待发布的文章,预览链接就可以使用啦。

总结

  • WordPress的可定制性真的很强,最近接触后深有体会
  • WordPress可通过设置 -> 固定链接来设置文章的访问地址
  • WordPress可通过设置 -> 常规 来设置前台和后台的访问地址
  • WordPress可通过钩子preview_post_link来自定义预览链接

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

故善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷,是谓要妙

2024-10-23 20:03:53

Albert Shi wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客