こんにちは朱夏です。
今回は、残っている問題の解決に向けて調べていきたいと思います。
残った問題はこちらです。
- CSSファイルの記述が無視される理由
- ナビゲーションバーのリンクに対するスタイルが無視される理由
- テーマ配布時の注意点(問題が解決しない場合)
問題解決に向けて、以下の手順で検証していきます。
- CSSが読み込まれない原因を予想する
- 予想に対して検証をしてみる
- 結果を確認
- 新たな問題を洗い出す
これを繰り返していきたいと思います。
1.CSSが読み込まれない原因を予想する
まず、考えられる原因を上げていきます。
ボーンテーマを使用せず、0から自作しているテーマなので、原因を予測すると、以下の事が考えられます。
- スタイルシートが読み込まれていない
- パスが間違っている
- 有効化されていない
- WordPress独自の導入方法がある
- 作成したスタイルシートより優先されているものがある
- WordPressのデフォルトスタイル
- Bootstrapで指定されているデフォルトの記述
今考えられる原因はこんなところでしょうか。
では次に行きます。
2.予想に対して検証をしてみる
初めに「CSSが読み込まれているのかどうか」、ここがクリア出来ていなければ何も始まりません。
mystyle.cssについて、実際に読み込まれたページから要素を取り出してみます。
タグ打ちで記載したものと、ファイルパスも確認します。
<-- 実際の記述 --> <link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/mystyle.css"> <-- WEBページの記述 --> <link rel="stylesheet" href="http://localhost/wp01/wp-content/themes/simple01/mystyle.css"> <-- CSS格納先のパス --> C:\MAMP\htdocs\wp01\wp-content\themes\simple01\mystyle.css
見たところ、パスのずれなどは無くちゃんと指定されているように見えます。
しかし、前回の結果の通り、スタイルは反映されませんでした。
今回の検証のため、テスト用の記述を用意します。
※前回記載したテーマカスタマイザーのCSS記述は削除しています。
※下記のテスト用の記述をheader.phpに書き込みました。
<div class="test"> <div> CSSテスト </div> </div>
そして、mystyle.cssとstyle.cssには下記のスタイルを記載してみました。
.test { background-color: lightcoral; }
スタイルが反映されれば、背景がピンク色になるはずなのですが、結果は何も変化なしでした。
そこで思い当たったのが、「WordPressが外部のスタイルシートの読み込みを許可していないのでは?」という事でした。
やってみることとして、mystyle.cssの読み込みに対しては記述していましたが、style.cssは記載していなかったので、追記してみることにしました。
追記したものはこちら。
<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>" type="text/css" />
結果は、変化有でした!
追記した事によってスタイルが反映されたということは、mystyle.cssは機能していない状態という事でしょうか。
次は、style.cssが読み込まれたと予想できるため、style.cssの記述だけbackground-colorをindigoに変更しました。
結果は・・・変化なしです。
どういう事だろうと、試しにmystyle.cssもindigo(紺)に変えてみますが、背景色は変わらずでした。
今度はCSSファイルの読み込みのために記載した2行を1つずつ無効化して確認してみることにしました。
結果は、mystyle.cssを読み込む側の記載を無効化した場合、反映されていたスタイルが消えるという現象を確認しました。
そして、style.cssの読み込み側を削除しても、問題なくスタイルが反映されるという事実も確認しました。
そもそもどちらの記述も読み込まれていなかったのに、sytle.cssの読み込み用の記載をした直後にスタイルが反映され、その記載を削除した後もスタイルが反映されたままという、おかしな現象が発生しています。
ググっても特に記載方法などに問題は見られなかったため、WordPressのバージョンに依存した問題の可能性も確認しておこうと、メニュー画面からバージョンを確認しました。
バージョンは5.3です。
しかし、バージョン固有の問題でもなかったため、途方に暮れてしまいました。
とりあえず確認のためにwebサイトの表示をしておこうと読み込んだところ・・・背景色が変わっていました!
そこで、そもそもの問題が間違っていた可能性が浮上しました。
×スタイルが読み込まれない
〇スタイルの読み込みに遅延がある
これだ、と思いググって調べてみたところ、ありました、私の様な事象を取り上げている記事が。
遅延が原因の可能性が高まってきました。
改善方法を参考にしてタグの修正を試みます。
※このタグ間違いです※
<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/mystyle.css">?v=<?php echo filemtime( get_stylesheet_directory() . '/mystyle.css') ?>”>
これで大丈夫と思ったのですが、結果はほぼ変わらずでした・・・気持ち反映が早くなったような気はします。
遅延するだけなら、作業効率の問題だけで、CSSファイル自体は使えますね。
ここで一旦解決としたいと思います。
下記タグに修正したら解決しました。
<link rel="stylesheet" href="<?php echo get_template_directory_uri(); ?>/mystyle.css?<?php echo filemtime( get_stylesheet_directory() . '/mystyle.css'); ?>">
これにより、反映遅延も改善されたので今回の問題は完全に解決しました。
参考サイトはこちらです。
3.結果を確認する
結果としては、こんな感じでしょうか。
- 読み込まれていないのではなく、読み込みの遅延が問題だった
- キャッシュをクリアすれば解決する
- CSSファイルの読み込み部分に追記である程度改善する
4.新たな問題を洗い出す
新たに浮上した問題としては、「style.cssの記述が無視される理由」がまだ不明な所でしょうか。
ローカルでhtmlファイルでページを作っていた時から別CSSファイルでスタイルを管理していたことや、WordPress上で編集するようになってからは、Bootstrapへの記述で管理していて、そもそもCSSへの記述自体していなかったことで、原因を特定するのは困難と判断しました。
スタイルはmystyle.cssで管理すれば問題は発生しないはずですので。
というわけで、問題解決としたいと思います。
個人的には、今回のメニューへのスタイル適用は、Bootstrapの記述で解決したかったのですが、今回は実現できずで残念でした。
そこに関しては今後の課題として挑戦していきたいと思います。
今回はここまでです。