51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

修复wp高亮插件Crayon Syntax Highlighter支持php8

Crayon Syntax Highlighter是一款很好的wordpress高亮插件,但是已经很多年不再进行更新了,而且也不支持php7.2以后的版本,如果你当前使用了最新的php版本,那么再使用这个插件时会报网站错误,具体错误日志内容如下:
[error] 162653#0: *42 FastCGI sent in stderr: "PHP message: PHP Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /www/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340PHP message:

|---|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 | [error] 162653#0: *42 FastCGI sent in stderr: "PHP message: PHP Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /www/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340PHP message: |

临时解决办法:

进入wordpress插件目录,找到crayon_highlighter.class.php文件,修改第340行

wp-content/plugins/crayon-syntax-highlighter/crayon_highlighter.class.php

将原内容:
return preg_replace('/[^\w-+#]/msi', '', $id);

|---|----------------------------------------------------| | 1 | return preg_replace('/[^\w-+#]/msi', '', $id); |

修改成
return preg_replace('/[^-\w+#]/msi', '', $id);

|---|----------------------------------------------------| | 1 | return preg_replace('/[^-\w+#]/msi', '', $id); |

PS:网上有很多复制粘贴文章说添加反斜杠的,同样可以解决此问题。即340行内容改成
return preg_replace('/\[^\w-+#]/msi', '', $id);

|---|------------------------------------------------------| | 1 | return preg_replace('/\[^\w-+#]/msi', '', $id); |

以上办法只是临时性,如果你使用了php8可能还会出现其他的问题,为了彻底支持php7~php8版本,我这里提供了两个修复好的插件包,该插件修复程序来自国外论坛用户分享,最后更新时间为2021年1月。

如果你当前使用的是Gutenberg(古腾堡)编辑器,那么请下载下面这个版本的高亮插件

https://down.whsir.com/downloads/crayon-syntax-highlighter_patched_10JAN21.zip

如果当前使用的是经典编辑器,那么请下载下面这个版本的高亮插件

https://down.whsir.com/downloads/crayon-syntax-highlighter_patched_10JAN21_classic.zip

赞(0)
未经允许不得转载:工具盒子 » 修复wp高亮插件Crayon Syntax Highlighter支持php8