PHPのバージョンを更新した影響で、WorPressのプラグイン『Crayon Syntax Highlighter』に不具合が生じました。このエラーはプラグインがうまく動作しないだけでなく、サイトの表示にも影響を及ぼすため、早急に対策を講じる必要があります。
しかし、エラー(バグ)の原因解明、不具合を直すことは意外と容易で、ファイルを一部修正するのみで済みます。この記事では、WorPressのプラグイン『Crayon Syntax Highlighter』の修正方法をご紹介していきます。
PHPバージョンの更新によりWordPressのプラグイン『Crayon Syntax Highlighter』で起こったエラー。
『Crayon Syntax Highlighter』にエラーが発生する原因
当サイトではプラグインの使用をやめています。Crayon Syntax Highlighterの使用はあまり推奨できません。
ソースコードを綺麗に表示してくれる『Crayon Syntax Highlighter』というプラグインがあります。
プログラムのコードを紹介してくれるサイト、特にWordPressでのHTML・CSSの変更や、プラグイン、テーマの修正などを紹介してくれるサイトでは、使用しているのをよく見かけるプラグインです。
例えばこれを
<html>
<head>
</head>
<body>
<p>Hello, World!</p>
</body>
</html>
こうしてくれます。
<head>
</head>
<body>
<p>Hello, World!</p>
</body>
</html>
当サイトもこちらを使用していたのですが、PHPのバージョンを変更したことにより、残念ながらエラーが発生してしまうようになりました。
そもそもこのプラグインは、(2020.04時点で)4年前の2.8.4でバージョンアップが終了しています。WordPressのバージョンでいうと4.2.0の時期で、更新が止まっているためエラーが発生するのは仕方がありません。
エラー発生時にWordPressに表示されたのが、以下の文言。
プラグインの有効化中に20526文字の予期しない出力が生成されました。 “headers already sent” メッセージや RSS フィードの問題、その他の不具合に気づいた場合、このプラグインの停止または削除を試してください。
PHPのバージョンアップにより、この潜在的なバグが顕在化しました。
プラグインを停止するだけで問題は解消されますが、それでは以前書いた記事中のコードが不自然に表示されるようになってしまいます。
原因は「crayon_langs.class.php」のファイルにあるらしく、このファイルの問題部分を書き換えれば、プラグインを使用しても問題なく動作するようになります。
『Crayon Syntax Highlighter』のエラーを解消する方法
上記の通り、「crayon_langs.class.php」に不具合の原因があります。
「crayon_langs.class.php」ファイルの場所は以下の通り。
対象のドメイン > public_html > wp-content > plugins > crayon-syntax-highlighter > crayon_langs.class.php
このファイルをダウンロードして修正した後、修正したファイルをアップロードし直します。
「crayon_langs.class.php」ファイルを書き換える
書き換える場所は、337~341行のfunction clean_id($id)のメソッドです。
修正前と修正後の比較を以下に示します。
// Override
function clean_id($id) {
$id = CrayonUtil::space_to_hyphen( strtolower(trim($id)) );
return preg_replace(‘/[^\w-+#]/msi’, ”, $id);
}
337行~341行を表示しています。
// Override
function clean_id($id) {
$id = CrayonUtil::space_to_hyphen( strtolower(trim($id)) );
return preg_replace(‘/[^\w\-+#]/msi’, ”, $id);
}
337行~341行を表示しています。
異なるのは1か所のみ、340行目に1文字加えるだけです。
(‘/[^\w-+#]/msi’, ”, $id) ⇒ (‘/[^\w\-+#]/msi’, ”, $id)
\wの部分を\w\に修正してください。
これでファイルを保存した後、もとにあった場所にアップロードしてください。
以上でプラグインの不具合を修正できます。
crayon_langs.class.php340行目の\wを\w\にする
X-SERVERの場合
対象のファイルの場所は以下の通り。
対象のドメイン > public_html > wp-content > plugins > crayon-syntax-highlighter > crayon_langs.class.php
X-SERVERの場合のダウンロード・アップロードの仕方をご説明します。
まずはログイン後、サーバー > ファイル管理 に進んでください。
その後、対象のドメイン > public_html > wp-content > plugins > crayon-syntax-highlighter という順にフォルダをクリック。crayon-syntax-highlighterフォルダの中にあるcrayon_langs.class.phpをクリックしてダウンロードします。
修正後のファイルを選択し、「自動」のままアップロードしてください。