WordPressで<や>が勝手にエスケープされる場合の対処

Medium 185624882 photo credit: mrfrogger via photopin cc

こんばんは、ボーノです。

自分はWordPressでブログを運用し、crayon-syntax-highlighterというプラグインを使用してコードを貼り付けている。

そしてMarkdown記法で書く。おなじみMarsEditも使用している。

非常に一般的な、よくある組み合わせだと思う。

しかし、コードの<とか>が勝手にエスケープされて、<や>に変換されて表記がめちゃくちゃになってしまうという現象にずっと悩まされていた。

ググっても案外この問題はヒットしなくて、みんなどうしているのか?だった。 ブログエディタやらプラグインやら、怪しいものもたくさんある。

ようやく、どんぴしゃのサイトが見つかったので残しておく。

同様の悩みを抱えている方は、是非試してみてほしい。

<とか>の自動エスケープの解決方法

ずばり下記サイトに書いてある。本当に助かりました汗

crayon-syntax-highlighterで勝手にHTMLEscapeされる問題をどうにかしたい | デジタネイティブ

簡単に書くと、下記2つを行うだけ。

crayon_formatter.class.phpを編集

自分は下記ディレクトリにあった。

/var/www/html/wordpress/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php

563行目を下記の通り編集。

            if (empty($code)) {
                    return $code;
            }   
            /* Convert <, > and & characters to entities, as these can appear as HTML tags and entities. */
            if ($escape) {
                    //563行目をコメントアウトする。
                    //$code = CrayonUtil::htmlspecialchars($code);
            }   

operator.txtを編集

下記ディレクトリで発見。

/var/www/html/wordpress/wp-content/plugins/crayon-syntax-highlighter/langs/default/operator.txt

不要な区切り文字(デリミタ)の削除。

# &=
# &

なお、デリミタとは要素同士を区切るための文字列のこと。CSVファイルのコンマと同じ役目だ。

デリミタとは