目次
はじめに
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先生もニッコリしてくれると思います。
今日はこの辺でー