高速化プラグインとの併用(使用されていない CSS の削除などの除外設定)

高速化プラグインとの併用(サンプル)

shitate pro blocks の CSS は、@scope と入れ子(CSS ネスティング)を使って書かれています。ページキャッシュや、CSS をそのまま結合・圧縮するだけの機能とは問題なく併用できますが、CSS を解析して作り直す機能は、こうした比較的新しい書き方を正しく扱えないことがあります。ここでは、どの機能に注意が必要か、プラグインが用意しているフック、WP Rocket での設定例をまとめます。

症状

代表的なのは、WP Rocket の「使用されていない CSS を削除」(Remove Unused CSS)を有効にすると、クエリラップのカード一覧が高さ 1px に潰れて見えなくなる、というものです。入れ子のセレクターが落とされ、その中の指定がスコープのルート(.sb-query-wrap)にそのまま当たってしまうために起きます。「キャッシュの有無で表示が変わる」「スマホでだけ一覧が消える」といった形で気づくことが多いです。

機能ごとの注意

機能併用補足
ページキャッシュ(WP Rocket、LiteSpeed Cache、W3 Total Cache など)問題なしテキストアクションなど、設定で表示が変わる機能を使ったときはキャッシュの削除が必要です
CSS の結合・縮小(minify / combine)問題なし@scope を知らない古いバージョンの縮小ツールは壊すことがあるので、最新版で使ってください
使用されていない CSS を削除(WP Rocket の RUCSS、LiteSpeed Cache の UCSS など)除外が必要プラグインの CSS を対象から外します(下の設定例)
クリティカル CSS の生成、CSS の遅延読み込み除外を推奨生成された CSS に @scope が正しく含まれないことがあります
JS の遅延読み込み・結合基本的に問題なしスライダーなどは Splide の読み込みを待ってから動く作りです。不具合があれば shitate-pro-blocks を除外してください

仕組み:CSS に目印を付ける

プラグインは、自分が出力するすべてのスタイルシートの <link> と、scope ブロックの <style id="sb-scope-css"> に data-sb-css という属性を付けています。多くの最適化プラグインには「この属性が付いたタグは触らない」という除外設定があるので、そこに data-sb-css を登録すれば、プラグインの CSS だけを最適化の対象から外せます。

<!-- プラグインの CSS(<link>)には data-sb-css が付く -->
<link rel="stylesheet" id="sb-shared-css" href="…/shitate-pro-blocks/build/shared.css" data-sb-css>

<!-- scope ブロックの CSS も同じ -->
<style id="sb-scope-css" data-sb-css>…</style>

ただし WordPress は、小さなブロック用 CSS を <link> ではなく <style> としてインライン化することがあります。インライン化された CSS には属性を付けられないため、除外したい場合はインライン化をやめて <link> のまま出す必要があります。それを切り替えるのが 2 つ目のフックです。

フック

プラグイン自体は、特定の高速化プラグインに合わせた処理を持っていません。代わりに次の 2 つのフック(shitate pro blocks 1.7.2 で追加)を用意しているので、お使いの最適化機能の除外設定と組み合わせて使います。

名前用途
sb_style_tag_attributes(フィルター)プラグインが出力する <link> と scope ブロックの <style> に付ける属性の配列。既定は data-sb-css だけです。最適化プラグインが「触らない目印」にする属性をここで足せます。
sb_inline_block_styles(フィルター)false を返すと、WordPress によるブロック CSS のインライン化をやめ、<link> のまま出力します(既定は true)。属性で除外する場合に必要です。

設定例:WP Rocket の「使用されていない CSS を削除」

子テーマの functions.php か、コードスニペット系のプラグインに次のコードを追加します。

// 1. ブロック CSS をインライン化せず <link> のまま出す(属性を付けるため)
add_filter( 'sb_inline_block_styles', '__return_false' );

// 2. WP Rocket の「使用されていない CSS を削除」から、data-sb-css 付きの CSS を除外する
add_filter( 'rocket_rucss_skip_styles_with_attr', function ( $attrs ) {
	$attrs[] = 'data-sb-css';
	return $attrs;
} );
add_filter( 'rocket_rucss_external_exclusions', function ( $patterns ) {
	$patterns[] = 'data-sb-css';
	return $patterns;
} );
add_filter( 'rocket_rucss_inline_atts_exclusions', function ( $patterns ) {
	$patterns[] = 'data-sb-css';
	return $patterns;
} );

追加したら、WP Rocket の「使用済み CSS を削除」(Clear Used CSS)と「キャッシュを削除」を実行し、シークレットウィンドウなどキャッシュのない状態で表示を確認してください。

ほかの高速化プラグイン

LiteSpeed Cache の UCSS、Autoptimize、Perfmatters などでも考え方は同じです。プラグインの除外設定が URL やファイル名で指定する方式なら shitate-pro-blocks を登録し、属性で指定する方式なら data-sb-css を登録します。別の属性を見る最適化プラグインには、フックで属性を足せます。

// 別の属性を見る最適化プラグイン向けに、目印の属性を追加する
add_filter( 'sb_style_tag_attributes', function ( $attributes ) {
	$attributes['data-noptimize'] = ''; // 例: 値なしの属性。'1' のように値も指定できる
	return $attributes;
} );

確認方法

  • ページのソースで、shitate-pro-blocks の CSS の <link> に data-sb-css が付いていて、最適化後もそのまま残っているかを見ます。
  • ブラウザーの検証ツールで .sb-query-wrap などのブロックを選び、高さが 1px になっていないか、入れ子のスタイルが当たっているかを見ます。
  • 最適化機能をいったんオフにして表示が直るなら、その機能が原因です。

注意点

  • 設定を変えたあとは、最適化プラグイン側で生成済みの CSS とページキャッシュを必ず削除してください。古い生成結果が残っていると直りません。
  • プラグインのアップデートで CSS が変わった場合も、生成済みの CSS を作り直す必要があります。
  • サポートが終了した OS の古いブラウザーでは @scope 自体が使えません。対象ブラウザーについては 製品ページの動作環境を参照してください。

タイポグラフィスケール

変更はこのページに即時反映され、あなたのブラウザ内にだけ記憶されます。サイト側には何も保存されません。

比率が大きいほど見出し間のコントラストが強くなります(typescale.com と同じ考え方)。

画面幅 375px で使う比率。1260px までにメイン比率へなめらかに変化し、メディアクエリなしでスマホでは文字も余白も引き締まります。

本文の文字サイズ。スケール全体はここから計算されます。

すべての文字段を偶数ピクセル(2px)にスナップします。

Small / X-Small / XX-Small を比率で割らず 0.95rem / 0.8rem / 0.75rem に固定します(比率で割ると小さすぎて読みにくくなる場合の対策)。

この画面幅での実サイズ
Display / H1 –
Huge / H2 –
Extra Large / H3 –
Large / H4 –
Medium / 本文 –
Small / H6 –
X-Small –
XX-Small –