WordPress 代码高亮插件 Enlighter 跟首行缩进代码的冲突

正文索引 [隐藏]

发现问题

安装Enlighter插件后,发现没有首行缩进。于是便加入了首行缩进代码。这一加不得了,代码全都变成了这种情况

肯定是插件冲突了,然后从大佬博客程门立学得知:Enlighter 插件正常都是会创建一个 EnlighterJSRAW 的类,然后使用了如下的语句:

  1. <pre class="EnlighterJSRAW" style="display: none;" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group=""></pre>

这种情况下就会正常调用相应的资源,正常将代码高亮。但不正常显示的情况下,代码是这样的:

p style=”text-indent:2em;” re class=”EnlighterJSRAW” data-enlighter-language=”php

这代码一看就知道是 WP首行缩进 2 字符中的代码

  1. $return = str_replace('<p', '<p style="text-indent:2em;"',$text);

确保在文章中首行缩进2字符

但现在 enlighter 这个插件,也会在前端代码中插入 <pre></pre > 的代码,而刚好符合了 < pre > 的条件,自然就把它全部替换走了。那 enlighter 插件的代码就变成了

  1. <p style="text-indent:2em;” re class="EnlighterJSRAW"data-enlighter-language="php"

自然就没效果了。

解决方案

将首行缩进的代码

  1. $return = str_replace('<p', '<p style="text-indent:2em;"',$text);

修改为

  1. $return = str_replace('<p>', '<p style="text-indent:2em;">',$text);

就可以了

原文链接https://www.iappi.cn/2019_05/2019690.html