本ページはアフィリエイトプログラムによる収益を得ています。
WordPress全般

【バグ・エラー】PHP変更に伴い『Crayon Syntax Highlighter』を修正する方法

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>

こうしてくれます。

<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文字加えるだけです。

crayon_langs.class.php 340行目

(‘/[^\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の場合のダウンロード・アップロードの仕方をご説明します。

ファイル管理

まずはログイン後、サーバー > ファイル管理 に進んでください。

対象ファイルをDL

その後、対象のドメイン > public_html > wp-content > plugins > crayon-syntax-highlighter という順にフォルダをクリック。crayon-syntax-highlighterフォルダの中にあるcrayon_langs.class.phpをクリックしてダウンロードします。

アップロード

修正後のファイルを選択し、「自動」のままアップロードしてください。