【WordPress】Crayon Syntax Highlighterの致命的エラー修復について

Pocket

以前ソースコードをブログに綺麗に記載するプラグインとして「Crayon Syntax Highlighter」をご紹介しました。

しかしこの「Crayon Syntax Highlighter」にはとんでもない落とし穴があり、使用しているWordPressのバージョンによっては致命的なエラーを引き起こす可能性があったのです。

「Crayon Syntax Highlighter」とは?

このようにソースコードを綺麗にブログに表示できるプラグインです。国内でも人気のあるプラグインであり、そのユーザーも多いのですが、近年このプラグインを使用していると予期せぬ不具合が発生するという報告もあります。
私もその一人で、このプラグインを使用し始めてからハンバーガーメニューが機能しなくなったり、抜粋記事が二記事しか表示されなくなったり、記事が正しく表示されなくなったりました。
原因は全て「Crayon Syntax Highlighter」よるものでした。

「Crayon Syntax Highlighter」によるエラー

「Crayon Syntax Highlighter」を使用した当初、エラーには気づきませんでした。その時のWordPressのバージョンは古いものであり、ある程度互換性があったためだと思います。
この「Crayon Syntax Highlighter」のエラーが明るみにでたのはWordPressのバージョンを最新版、Ver.5にアップロードした時のことです。
突然ブログのトップページに抜粋記事が2つしか表示できなくなりました。それだけじゃなくて画面を下にスクロールしようとすると一番上に戻されたり、記事が正しく表示されなくなりました。

WordPressの更新時に発生したバグだったので、原因はWordPress本体にあると思い、WordPressを古いバージョンにしたり、再インストールしたりとかなり混乱しましたが、再インストールした際に「Crayon Syntax Highlighter」を有効化した瞬間にバグが再び発生したため、このプラグインが原因と特定できました。

「Crayon Syntax Highlighter」はかなり古いプラグインです。WordPressのバージョンを5.0以上に上げた時に致命的なエラーが浮き彫りになりますが、「Crayon Syntax Highlighter」のプラグインがインストールされてる「/wp-content/plugins/crayon-syntax-highlighter」の中にある「crayon_langs.class.php」に原因があります。この中のコードを修正することで、バグを直すことができることが判明しました。

※あとで知りましたが、実際の原因はWordPressではなくPHP7.3以上が原因だったようです。

「Crayon Syntax Highlighter」の修復方法

原因は「crayon_langs.class.php」のソースコード、337行目付近にある

 

の部分です。これを

[^\w-+#] → [^\w\-+#]

に変更すれば修復できるはずです。私はこれでVer5以上でも正常に動くようになりました。

エッグ

シェアする

コメントを残す

メールアドレスが公開されることはありません。

コメントする