ソースコードをハイライトしてくれるWordPressプラグイン SyntaxHighlighter Evolved は非常に便利なのですが、テーマファイルの作り方によっては上手くソースコードをハイライトしてくれない時がありますので、注意が必要です。
過去にわたし自身がハマった時の解決策も含め、様々なサイトで紹介されている「SyntaxHighlighter Evolved」が動かない場合の原因とその解決法をまとめてみました。
目次
・<?php wp_head(); ?>の記述の欠落
・<?php wp_footer(); ?>の記述の欠落
・ショートコードの記述ミス
・<?php the_content(); ?>のカスタマイズによる影響
・functions.php内のコードとの干渉
・他のプラグインファイルとの干渉
・「Amazon」バナーのソースコードとの干渉
・「バリューコマース」のアフィリエイトコードとの干渉
・<?php wp_footer(); ?>の記述の欠落
・ショートコードの記述ミス
・<?php the_content(); ?>のカスタマイズによる影響
・functions.php内のコードとの干渉
・他のプラグインファイルとの干渉
・「Amazon」バナーのソースコードとの干渉
・「バリューコマース」のアフィリエイトコードとの干渉
(1)<?php wp_head(); ?> の記述の欠落
テーマファイル header.php の <head> 内に[php] <?php wp_head(); ?>
[/php] の記述があることが前提となります。
これが無いと SyntaxHighlighter Evolved が動きません。
<?php wp_head(); ?> を設置する場所については </head> までの間であればどこでも動くのですが、色々と他のJavascript ファイルを引っ張っている場合は、それらのファイルよりも前に記述してあげた方が良さそうです。
(2)<?php wp_footer(); ?> の記述の欠落
テーマファイルのfooter.php に[php] <?php wp_footer(); ?>
[/php] の記述があることも前提となります。
(1)同様、これも記述が無いと SyntaxHighlighter Evolved が動きません。
<?php wp_footer(); ?> を設置する場所については footer.php の </body> の直前が良いそうです。
(3)ショートコードの記述ミス
SyntaxHighlighter Evolvedで 利用できる [php][html][css]などのショートコードの記述が間違っている、または[/php][/html][/css]などでコードが閉じられていないという原因が考えられます。(4)<?php the_content(); ?> のカスタマイズによる影響
例えば以下のように[php] <?php echo mb_substr(strip_tags($post-> post_content),0,200) ; ?>
[/php] 投稿記事に200 文字で表示制限をかけているような場合に、SyntaxHighlighter Evolved が上手く動いてくれないようです。
ここは、
[php] <?php the_content(); ?>
[/php] で正しく記述し直せば問題ないようです。
(5)functions.php 内のコードとの干渉
最近追記した functions.php 内のコードを1 つ1 つ外してみて、干渉していないかどうか確認してみましょう。(6)他のプラグインファイルとの干渉
プラグインを数多く入れていると、その分だけ干渉する可能性が高くなるかもしれませんので、WordPress 管理画面でプラグインを1 つ1 つ外してみて、干渉していないかどうか確認してみましょう。某かの影響が出るプラグインとしては
Script Compressor
があるようです。(7)「Amazon」バナーのソースコードとの干渉
Amazon バナーのソースコードに含まれる<iframe> と干渉して、上手くハイライトされないケースがあるようです。また、Google Chromeで上手く表示されないとの事例もあります。
一度 <iframe> のコードを外してみて SyntaxHighlighter Evolved が正常に動くかどうか確認してみましょう。
(8)「バリューコマース」のアフィリエイトコードとの干渉
アフィリエイト絡みでもう1 つ。バリューコマースのアフィリエイトコード
[html] <valuecommerce ptnOid="*******" url="http://www.hoeghoge.com/" />
[/html] ですが、これはバリューコマースのサイト認証が終われば外していいのですが、
<?php wp_head(); ?> よりも前にアフィリエイトコードの記述があるとうまくハイライトされません。原因は不明です。
不要な場合はコードを除去するか、どうしても残しておきたい場合は、
<?php wp_head(); ?> よりも後にアフィリエイトコードを記述します。
色々調べた結果、現在考えられそうな原因は概ねこんな感じでしょうか。
たまにテーマファイルをいじくると動かなくなったりするので、大きくサイトをイメチェンした場合などは SyntaxHighlighter Evolved が正常に動くかどうかを確認された方が良いかもしれませんね。
コメントを残す