【TCD】子テーマ化でレスポンシブ表示が崩れる問題の対処法|function.phpでCSS読み込み順を修正

TCDテーマで子テーマを作成したところ、レスポンシブ表示が崩れるという問題に遭遇しました。

同じ症状で困っている方向けに、原因と解決方法をまとめます。

症状

子テーマを作成した直後から、レスポンシブ表示が崩れてレイアウトが乱れる状態になりました。

原因を調べるためにソースを確認したところ、親テーマのスタイル(CSS)が読み込まれていないことがわかりました。

原因

TCDテーマは作成時期によって、親テーマと子テーマのCSS読み込み順が正しく制御されていないものがあるようです。本来であれば「親テーマのCSS → 子テーマのCSS」の順で読み込まれるべきところが、順序が逆転したり、親テーマのCSSが子テーマに上書きされてしまうケースがあります。

headerに手動でLINKタグを追加するなど複数の方法を試しましたが、CSS読み込みの並び順がシビアなためうまくいきませんでした。

対処法:function.phpでCSS読み込み順を明示的に制御する

TCD公式が案内している方法で解決できます。

子テーマの functions.php に以下のコードを追加してください。

function theme_enqueue_styles() {
    // 親テーマのstyle.cssを一旦登録解除
    wp_dequeue_style('main-style');
    wp_deregister_style('main-style');

    // 親テーマのstyle.cssを「main-style」として再登録
    wp_enqueue_style(
        'main-style',
        get_template_directory_uri() . '/style.css'
    );

    // 子テーマのstyle.cssを登録。依存関係として親テーマのスタイルを指定
    wp_enqueue_style(
        'child-style',
        get_stylesheet_directory_uri() . '/style.css',
        array('main-style')
    );
}
add_action('wp_enqueue_scripts', 'theme_enqueue_styles', 11); // 優先度11で実行
ポイント
  • 親テーマのCSSをいったん登録解除してから再登録することで、読み込み順を明示的にコントロールします
  • array('main-style') という依存関係の指定により、子テーマのCSSは必ず親テーマのCSS読み込み後に適用されます
  • add_action の第3引数 11 は優先度の設定です。デフォルト(10)より後に実行することで、他のスタイル登録との競合を防ぎます

このコードを追加したところ、レスポンシブ表示の崩れが解消されました。

まとめ

TCDテーマで子テーマを作成した際にレスポンシブ表示が崩れる場合は、CSSの読み込み順が原因である可能性が高いです。子テーマの functions.php にCSS読み込みを明示的に制御するコードを追加することで解決できます。

同じ症状でお困りの方はぜひお試しください。

この記事を書いた人

はなわ

パリスタデザイン事務所のWebデザイナー。
得意分野は、使い勝手についてきめ細やかに考えられたCMS設計・構築。
3児の母でもあります。ゲーム・パソコンが趣味。
好きが高じてEC事業部でPCや自作PCパーツ・ゲーミング関連グッズの販売も行っています。

お仕事のご依頼はこちらまで

パリスタデザイン事務所は、WordPressの構築/カスタマイズを得意としています。
Web制作に関するお仕事は、パリスタデザイン事務所までお気軽にお問い合わせください。

コメントを残す

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

CAPTCHA