解決:Crayon Syntax HighlighterをPHP7系で使うための修正方法

PHP7系では動作しないCrayon Syntax Highlighterの動作するようにする方法について覚書。

Crayon Syntax Highlighter プラグインをPHP7系で動作させるとサイトの表示がおかしくなって記事が表示されなくなるのですぐに無効化する必要があります。

とはいえ、すぐ別のプラグインに変えるのも難しいかと思うので Crayon Syntax Highlighter をPHP7でも動くようにするための修正手順を紹介します。

スポンサーリンク

Crayon Syntax HighlighterをPHP7系で有効化した場合に起こること

「サイトに技術的な問題が発生しています。」というメッセージが表示され記事が全く表示されなくなります。

またエラーメッセージがページに表示されたり、サイトのレイアウトも崩れて表示されたりする場合もあるのですぐに無効化しましょう。

Crayon Syntax HighlighterをPHP7系で使うための修正方法

Crayon Syntax Highlighter をPHP7系で使うための修正方法については、以下のサイトを参考にさせていただきました。

コメント欄がなくお礼が書けなかったのですが、ほんとに助かりました。

ありがとうございました。

[WordPress] BugFix the Crayon Syntax Highlighter with PHP 7.3 | Tech控え帳

ただあまりこの手のことに詳しくない方には少しわかりづらい気もしたので記事にしました。

修正手順

修正手順としては、Crayon Syntax Highlighter の以下の2つのファイルのコードをちょっとだけ書き換えます。

  • crayon_langs.class.php
  • crayon_formatter.class.php

どちらのファイルもサイトのルートディレクトリ配下の、

wp-content/plugins/crayon-syntax-highlighter/

ディレクトリに保管されています。

以下に具体的なCrayon Syntax Highlighter の修正手順を記載します。

crayon_langs.class.php ファイルの修正

crayon_langs.class.php ファイルをエディタで開きます。

338行目あたりにあるfunction clean_id関数内の記載を以下のように変更します。

変更前:

	// Override
	function clean_id($id) {
        $id = CrayonUtil::space_to_hyphen( strtolower(trim($id)) );
        return preg_replace('/[^\w-+#]/msi', '', $id);
	}

変更後:

	// Override
	function clean_id($id) {
        $id = CrayonUtil::space_to_hyphen( strtolower(trim($id)) );
        return preg_replace('/[^\w\-+#]/msi', '', $id);
	}

修正したら上書き保存します。

crayon_formatter.class.php ファイルの修正

crayon_formatter.class.php ファイルをエディタで開きます。

118、119行目あたりにある"$toolbar_height ="と”$info_height =”の部分の記載を以下のように変更します。

変更前:

 // Don't allow line height to be less than font size
            $line_height = ($_line_height > $_font_size ? $_line_height : $_font_size) . 'px !important;';
            $toolbar_height = $font_size * 1.5 . 'px !important;';
            $info_height = $font_size * 1.4 . 'px !important;';

            $font_style .= "font-size: $font_size line-height: $line_height";

変更後:

// Don't allow line height to be less than font size
            $line_height = ($_line_height > $_font_size ? $_line_height : $_font_size) . 'px !important;';
            $toolbar_height = $_font_size * 1.5 . 'px !important;';
            $info_height = $_font_size * 1.4 . 'px !important;';

            $font_style .= "font-size: $font_size line-height: $line_height";

修正したら上書き保存します。

直接2つのファイルを編集している場合は、上書き保存後にCrayon Syntax Highlighterを有効化してください。

いったんローカルに2つのファイルをダウンロードして編集した場合は、サイトにアップロードして差し替え後、Crayon Syntax Highlighter を有効化してください。

きちんと表示されるように戻ったはずです。

まとめ

WordPressのPHPバージョンをバージョンアップする際は、可能であればテストサイトなどを作っておいて使用しているプラグインやテーマなどに影響がないか確認してから本番サイトのバージョンアップをしたほうがよいかと思います。

Crayon Syntax Highlighter については、3年前くらいから更新が止まっているため、今後のバージョンアップは期待できませんので、代わりとなるプラグインを検討したほうが良いかと思います。

情報を提供してくれた「Techブログ」さんありがとうございました。

コメント

タイトルとURLをコピーしました