Test how mobile-friendly your site is
最近、上記のGoogleの新しいモバイルサポートテストツールが発表になったりして、モバイル回りがざわめいています。
あんまり、低い点数だと妙に恥ずかしく感じる今日この頃、重い腰を上げて、script要素にdefer属性を付け始めました。
CSSと違って、script要素には、ハンドル名を示すid要素が降られていないので、まずは handle名を取得します。
functions.php
<?php function inspect_script_handles() { global $wp_scripts; foreach( $wp_scripts->queue as $handle ) { echo $handle,' '; } } add_action( 'wp_print_scripts', 'inspect_script_handles' ); ?>
このフィルターを使うと、ページの最上部にhandle 一覧が表示されますので、それらのハンドル名をつかって、script要素に defer属性を追加していきます。
functions.php (handleは、自身のサイトのscript handle名に置き換えてください)
add_filter('script_loader_tag', 'add_defer_script_loader_tag',10 , 2 ); function add_defer_script_loader_tag($tag, $handle){ if ( 'raindrops_slides'== $handle | | 'crayon_js'== $handle | | 'contact-form-7'== $handle | | 'jquery-ui-tooltip'== $handle ) { return str_replace( ' src', ' defer="defer" src', $tag ); } return $tag; }
関連:スタイルシート <link rel=”stylesheet” id=”style-css” … />を操作したい時
以下は、スタイルシートの属性値がシングルクウォートで囲まれているものを、ダブルクウォートに変更するフィルターです。
add_filter( 'style_loader_tag', 'nobita_quote_to_double' ); function nobita_quote_to_double( $return_value ) { return str_replace( "'", '"', $return_value ); }
一時的にスタイルを無効にする
わざわざフィルターを使うまでもなく、検証ツールで、disabledを追加すればいいだけですが、仮のurlを指定したり、ちょっとしたカスタマイズの計画を立てる時とか、利用シーンがあるかもしれません。
add_filter( 'style_loader_tag', 'nobita_style_disabled' , 10, 4 ); function 'nobita_style_disabled'( $html, $handle, $href, $media ) { if( 'bbp-default'== $handle ) { return "<link rel='stylesheet' id='$handle-css' href='$href' type='text/css' media='$media' disabled />\n"; } return $html; }