【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デザイナー・フロントエンドエンジニア。
WordPress構築・カスタマイズを中心に、CMS設計・構築や情報設計を得意としています。
AIやWeb技術、PC/ガジェットを活用しながら、「無理なく続く仕組みづくり」や実務に役立つ知見を発信しています。

お仕事のご依頼はこちら

パリスタデザイン事務所では、WordPress構築・カスタマイズを中心に、Web制作に関するご相談を承っています。

コメントを残す

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

CAPTCHA