844ルールあるCSSのうち効いていたのは4個だけ。別テーマ用プラグインを止めて93 KB削減した

Twenty SixteenでEnvo Extraが約94 KBを読み込んでいました。CSS844ルールの適用状況とJavaScriptの動作を調べ、必要な1宣言だけを引き継いで停止した手順と実測結果を紹介します。

虫眼鏡を持つ日本人女性が、Envo Extraの844ルールから該当する4系統を調べ、1宣言を移して93,432 B削減した流れを示している

WordPressの読み込みファイルを調べていると、使っているテーマとは別の名前が付いたCSSとJavaScriptが見つかりました。Envo Extraというプラグイン由来で、合計は93,906バイト。すぐ削除するのではなく、844個のCSSルールとJavaScriptの対象を調べ、実際に必要だった1つの指定だけを子テーマへ移して停止しました。

Envo Extraが3ファイルを読み込んでいた

対象になったファイルは次の3本です。

ファイルサイズ
gutenberg.css67,799 B
style.css24,846 B
envo.js1,261 B
合計93,906 B

僕のサイトはTwenty Sixteenの子テーマです。それなのに、ファイル名やCSSクラスを見ると .envo-* やWooCommerce向けの指定が大量に含まれていました。

WordPress.orgにあるEnvo Extraの説明を確認すると、Enwoo、Envo Royal、EnvoThemes製のWooCommerceテーマ向けの拡張プラグインです。FAQにも、それらのテーマでのみ機能すると明記されています。

つまりTwenty Sixteenでは、本来の機能が動く組み合わせではありません。それでもフロント画面ではCSSとJavaScriptが読み込まれていました。

844ルール中、このサイトに当たったのは4個

ただし、「別テーマ用だから全部無意味」と決めつけるのも危険です。テーマ固有のクラス以外に、body や a のような一般的なセレクタが含まれていれば、現在の見た目に影響している可能性があります。

そこで、Envo ExtraのCSSルール844個を、実際のページ要素と照合しました。該当したのは4系統です。

ここでいうCSSルールとは、「どの要素に、どんな見た目を適用するか」をひとまとめにした設定です。たとえば a { color: blue; } は、すべてのリンクを青くする1つのCSSルールです。

{ } の中に色や余白など複数の指定が書かれていても、それ全体で1ルールとして数えます。844は行数やファイル数ではなく、Envo Extraの2つのCSSファイルに含まれていたルールの総数です。

ルール調査結果
body のExtendify用CSS変数Extendifyを使っておらず参照元なし
.is-layout-flexWordPress本体と同じ指定で重複
.gutenberg-on article { margin-bottom: 0 }親テーマ側の後勝ちルールに負けており無効
a, a:hover, a:focustext-decoration は親テーマと重複。transition: 0.3s だけ有効

見た目に残っていたのは、リンクの色が0.3秒かけて変わる transition だけでした。

「トップへ戻る」はこのプラグインの機能ではなかった

途中で一度、判断を間違えました。右下に表示される「トップへ戻る」ボタンは、Envo Extraが出していると思い込み、代替のCSSとJavaScriptを作りかけました。

しかし、envo.js の中身を読むと、操作対象は #return-to-top と .woo-float-info です。僕のサイトにはどちらの要素もありません。

実際のボタンは .page_top_btn で、スタイルを提供していたのはVK All in One Expansion Unitでした。つまり、Envo ExtraのJavaScriptはこのサイトでは何もしていませんでした。

見た目が似た機能や、プラグイン名から受ける印象だけで所有者を決めると、不要な代替実装を作ってしまいます。要素のclassやidと、CSS・JavaScriptの参照先を突き合わせる必要があります。

必要な1宣言だけ子テーマへ移した

プラグイン停止後もリンクの動きを維持するため、子テーマの style.css に次の指定を追加しました。

a,
a:hover,
a:focus {
  transition: 0.3s;
}

Envo Extra側には text-decoration: none もありましたが、Twenty Sixteenが同じ指定を持ち、しかも後から読み込まれていたため、引き継ぐ必要はありません。

追加したCSSはコメントを含めて474 B増えました。プラグインはすぐ削除せず、まず「停止」にして様子を見る運用にしています。問題が見つかったときに戻しやすくするためです。

予測と実測が1バイト単位で一致した

停止後は envo.js、gutenberg.css、gutenberg-on の痕跡がすべて0件になりました。

項目変更前変更後
自サイトのCSS/JS35本・868,223 B32本・774,791 B
削減量93,432 B

計算は 93,906 − 474 = 93,432 B です。事前の予測と変更後の実測が1バイト単位で一致しました。

表示面も数値で確認しています。

  • リンクの transition は0.3秒を維持
  • 「トップへ戻る」ボタンは存在し、position: fixed のまま
  • ソーシャルアイコンは display: flex を維持
  • 記事下余白は112pxのまま
  • コンソールエラーは0件

記事下の余白が変わらなかったことで、Envo Extraの margin-bottom: 0 はもともと負けていた、という事前の判断も裏付けられました。

プラグイン数ではなく、実際の仕事を見る

WordPressの高速化では「プラグインを減らす」とよく言われます。しかし、個数だけでは判断できません。1つで大きな処理をするプラグインもあれば、必要な機能を効率よく提供するプラグインもあります。

今回問題だったのは、プラグインが入っていたこと自体ではなく、このテーマでは機能していないのに約94 KBを全ページで読み込んでいたことです。

逆に、たった1行でも今の見た目へ効いている指定があれば、何も確認せず止めると変化します。僕は「公式の対象テーマを確認する」「CSSが当たる要素を数える」「JavaScriptが探す要素を確認する」「必要な指定だけ引き継ぐ」「停止後に数値で確認する」の順で整理しました。

プラグインを削除するかどうかは、そのあとで決めれば十分です。

参考リンク

参考になったらブログランキングを1回だけ押してもらえると助かります。
(1日1回でOK/匿名のまま応援できます)

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

トップへ戻る