WordPress – 插件OSS Upload与WP Editor.md/WP Githuber MD插件冲突,导致katex公式不正确显示的问题
原创文章,作者:StubbornHuang,如若转载,请注明出处:《WordPress – 插件OSS Upload与WP Editor.md/WP Githuber MD插件冲突,导致katex公式不正确显示的问题》https://www.stubbornhuang.com/758/
1 问题的出现
之前阿里云做活动,用9块钱撸了一个两年的40G-OSS,所以最开始搭建博客的时候就是使用了OSS Upload作为我的媒体库,同时在本地媒体库也存有备份。然后最新想好好写写有关计算几何算法的东西,不可避免的需要编辑大量的公式,而自己一直在使用markdown语法编辑文章,当然笔记软件习惯使用了OneNote了,但是正当我写三维空间中的旋转变换与旋转矩阵这篇博文时,我发现在WP Editor.md/WP Githuber MD编辑的好好的katex格式的公式点了发布与更新之后发现公式里面所有的反斜杠\都没有,要知道latex中很多特殊的字符都是通过反斜杠\来进行辨识的,而反斜杠的去除导致了在网页上面katex公式显示不出来,类似于下面:
r(\varphi) = \left[\left|\cos(m\varphi)\over a\right|^{n2} + \left| \sin(m\varphi) \over b\right|^{n3} \right]^{- 1 \over n1}
全部变成了:
r(varphi) = left[left|cos(mvarphi)over aright|^{n2} + left| sin(mvarphi) over bright|^{n3} right]^{- 1 over n1}
2 问题的排查与解决
2.1 主题排除
第一时间觉得是目前使用过的主题的问题,然后第一时间更换了别的主题,发现问题并没有解决。
2.1 插件排除
既然不是主题的问题,那么就是插件的问题了。注意将插件逐一关闭,发现将OSSUpload插件关闭之后,问题消失了。
2.3 代码审查
用ftp工具将OSSUpload整个插件的代码down到本地之后,发现了OSS Upload.php中有一个函数:
stripslashes
这个函数就是去除字符串中所有的反斜杠,md。找了很久终于找到了,发现了这个函数写在了函数oss_upload_post_save之中,其中在该插件初始化的时候已经注册了一个钩子函数:
add_filter('content_save_pre', 'oss_upload_post_save');
在文章内容保存之前即可触发这个钩子函数。
2.4 解决
将stripslashes这一行代码注释,重启OSSUpload插件,发现了latex公式正常显示了,bingo!欺负我不会PHP!!!
当前分类随机文章推荐
- WordPress - $Post WP_Post对象的属性
- WordPress - 插件OSS Upload与WP Editor.md/WP Githuber MD插件冲突,导致katex公式不正确显示的问题
- WordPress - robots.txt
- WordPress - 在每一个文章内容末尾都加一个作者信息展示框
- WordPress - 查看别人的网站是用的WordPress的哪个主题
- WordPress - get_post_type():获取当前文章或者给定文章类型
- WordPress - Windows使用PhpStudy本地部署WordPress
- WordPress - 在文章被复制时弹出弹窗提示转载注明原创
- WordPress - 在编辑文章发布时弹出是否发布提醒框
- WordPress - 应对暴力破解登录和规避DDOS的几种方法
全站随机文章推荐
- C++11/std::thread - 线程管理join/detach
- WordPress - 下载安装插件失败,无法创建目录
- C++11 - std::bind简要介绍以及可绑定函数的几种形式总结
- 资源分享 - Real-Time Rendering, Third Edition 英文原版Pdf下载
- 资源分享 - 非均匀有理B样条(第二版,Les Piegl),The NURBS Book中文译文版下载
- UnrealEngine4 - 将TextureRenderTarget2D保存为图片
- 姿态估计之COCO数据集骨骼关节keypoint标注对应
- WordPress - 后台登录成功/失败发送邮件给网站管理员
- UnrealEngine4 - error C4668: 没有将“_WIN32_WINNT_WIN10_TH2”定义为预处理器宏,用“0”替换“#if/#elif
- C++11 - std::shared_ptr初始化的几种方式