この間ブログ上で Emacs Lisp のコードを載せる事があり、そのハイライトに困った話です。結構このプラグインは情報が少なく、こうすれば出来るって話で止まってて苦労しました。

この辺のページとか見てました。

困った点

実は基本的には参考ページの通りに出来るはずなのです。

ですが、何故か対応しない不具合が学生より報告されたので、原因の調査と対処を行ないました。因みに自分の端末ではその時点では適応されたものが表示されており、何故か表示されない問題を対処した (と思っていた) 後の話です。

報告では iPhone で読まないとの事だったので、試してみるとどうにも読まないではないですか。
他の端末も試すも駄目だったので、逆に自分の端末だけが正常に動作している状態だと悟りました。
因みに現象としては、<pre></pre> タグ自体は読み込んでいるが、どうも JavaScript が読めないとアラートをわざわざ出して警告してくれました。

しかたが無いので、まずプラグインのソースを見てみると当たり前ですが、プラグインの中でCSS, JavaScript のコードに Link する為のコードを生成しています。プラグインを切るとそもそもアラートを出さ無いので、中途半端に適応されているのが分かりました。

という事で、実際に出力されている HTML を眺めると、Link は生成されているが、https になっているのを発見してしまいました。

ハイ、完全にこれです。

という訳で、 (あまり気がのらないけど) php のコードを修正して事なきをえました。

lang-pack-for-wp-syntaxhighlighter/lang-pack-for-wp-syntaxhighlighter.php

$add_nl_plugin_url = plugin_dir_url( __FILE__ ); // 元々あるコード
$add_nl_plugin_url = str_replace('https', 'http', $add_nl_plugin_url); // 追加行

上記コードの様に https の URI を生成した場合に http へ無理矢理修正を掛けています。
どうも plugin_dir_url が URI を生成してる見たいですが、何を勘違いしたのか、https にしてる為の対処です。

そんな訳で修正は出来たのですが、あまりしっくり込ない修正方法でした。多分 Apache の SSL の掛ける範囲を最小化すれば解決する話な気がしますが、それはまた後日にしておきます。