目次
はじめに
WordPressを使って、ソースコードを掲載するブログを運営するときに、ソースコードを際立たせてくれるのが「SyntaxHighlighter Evolved」プラグインです。
なぜTopページにも表示される?
WordPressプラグインのあるある話ですが、機能を使ってないページにもCSSやJSが読み込まれてしまう現象です。
まあプラグイン側からすると、どこで使うか分からないし、全部読み出しとけーとの考えでしょう。
しかし、Google先生はこれを良しとしません。
使って無いのに呼び出してるぞ、と指摘してきます。
指定のページだけに呼びだすようにする
functions.phpに以下の記述をすることで、Singleテンプレート(記事ページ)もしくはpageテンプレート(固定ページ)だけSyntaxHighlighter Evolvedの関係ファイルを表示させることが可能です。
if(!is_admin())
{
function remove_syntaxhighlighter(){
global $wp_filter;
if(
is_single()
|| is_page()
|| !isset($wp_filter['wp_footer'][15])
)
return ;
$hook15 = array();
foreach ($wp_filter['wp_footer'][15] AS $key => $obj){
if(!preg_match('/maybe_output_scripts/', $key)) {
$hook15[] = $obj;
}
}
unset($wp_filter['wp_footer'][15]);
$wp_filter['wp_footer'][15] =$hook15;
}
add_action( 'wp_footer', 'remove_syntaxhighlighter', 1);
}
SyntaxHighlighter Evolvedはページをリロードする毎に、action名を変更してしまうので、上記のソースのようにフックに設定されているaction名を正規表現でフィルタしてやる必要があります。
あと理由は分からないのですが、maybe_output_scriptsだけをunsetで削除することができないので、仕方なくフックのpriorty:15を全て削除して、再設定し直します。
もし特定のページもしくはCusto post typeで呼び出したい場合は、if文をカスタマイズすることで設定が可能です。
この設定で、Google先生もニッコリしてくれると思います。
今日はこの辺でー