teratail header banner
teratail header banner
質問するログイン新規登録
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

602閲覧

WordPressで固定ページごとに個別のCSSを読み込ませたい。

ajapar

総合スコア3

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2022/01/27 11:11

0

1

WordPressで固定ページごとに個別のCSSを読み込ませるために、header.phpに以下を記載しましたが反映されません。原因を教えて頂けますでしょうか?また、その他おすすめの方法がありましたら教えて頂けると幸いです。全てのcssファイルは同階層にあります。

<?php if(is_front_page() || is_home() ) { ?> <link rel="stylesheet" href="<?php home_url('templete_url'); ?>/./style.css"> <?php } else if (is_page('profile')) { ?> <link rel="stylesheet" href="<?php bloginfo('templete_url'); ?>/./style-profile.css"> <?php } else if (is_page('service')) { ?> <link rel="stylesheet" href="<?php bloginfo('templete_url'); ?>/./style-service.css"> <?php } else if (is_page('works')) { ?> <link rel="stylesheet" href="<?php bloginfo('templete_url'); ?>/./style-works.css"> <?php } else { ?> <link rel="stylesheet" href="<?php home_url('templete_url'); ?>/./style.css"> <?php } ?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

既に解決済みとなっているようですがheader.phpでいくなら
if文のネストは可読性・メンテナンス性を損なうので
switch case使って、私ならこう書きます。

php

1<?php 2switch (true) : ?> 3 <?php case is_front_page(): ?> 4 <?php case is_home(): ?> 5 <link rel="stylesheet" href="<?php echo home_url('templete_url'); ?>/style.css"> 6 <?php break; ?> 7 <?php case is_page('profile'): ?> 8 <link rel="stylesheet" href="<?php echo bloginfo('templete_url'); ?>/style-profile.css"> 9 <?php break; ?> 10 <?php case is_page('service'): ?> 11 <link rel="stylesheet" href="<?php echo bloginfo('templete_url'); ?>/style-service.css"> 12 <?php break; ?> 13 <?php case is_page('works'): ?> 14 <link rel="stylesheet" href="<?php echo bloginfo('templete_url'); ?>/style-works.css"> 15 <?php break; ?> 16 <?php default: ?> 17 <link rel="stylesheet" href="<?php echo home_url('templete_url'); ?>/style.css"> 18 <?php break; ?> 19<?php endswitch; ?>

後は、HiraKazu1124様がご指摘なさっているように./は今いる場所という相対アドレスなので、たぶん上記のコードになるか、../css/ファイル名といった記述になるのではないかと思います。

投稿2022/01/31 23:47

nekora

総合スコア501

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nekora

2022/01/31 23:54

役に立った回答には回答の下のサムズアップをクリックして評価を上げて回答の左の数字を増やしてあげてください。 また、解決に至った回答はベストアンサーに指定できます。 これらは、個別に指定でき、同時に指定することも可能です。 あと、解決したと言う事でベストアンサーが選ばれてますがそのアンサーにコメントをつけるか、 質問文は編集・追記ができますので、コメントか質問文にいかにして解決に至ったかを記載してください。 ここは、教えて掲示板ではなく、技術者同士の情報交換の場です、あとから同様な問題を抱えた方が見たときに こうやって解決したんだという、解決法を記載しておくようにしてください。
guest

0

ベストアンサー

まずはデバッグして原因を突き止めるのがいいでしょうね!

原因っぽいところ(推測)

パスにある「.」ですが、これは現在のファイルの場所を示すために使うものです。
「./a/b/c」だと、現在の場所から->a->b->c
というようにファイルを探します。これを相対パスといいます。

「/a/b/c」だと、ルートディレクトリ->a->b->c
というようにファイルを探します。これを絶対パスといいます。

基本的にWordPressでは基準となるパスを返す関数が豊富なので、なるべく絶対パスで書くようにした方がよいと思います。絶対パスで「.」は基本的に使いません。

あと、bloginfo関数は今回のような例ではあまり使わないかな?
bloginfo('template_url')もなんだか非推奨関数のようですよ?
https://whitebear-seo.co.jp/wordpress-bloginfo-deprecation/

それに、
<?php bloginfo('template_url'); ?>
と書いていますが、これはtemplate_urlを取得しただけで、phpの処理からhtml側に出力できていないのでは?
<?php echo bloginfo('template_url'); ?>
<?= bloginfo('template_url'); ?>
みたいにしないとHTML側に結果が出力されないのではないでしょうか?

本当にheader.phpが適切に読み込まれているのか?

header.phpにコメントでもつけて、HTMLのソースをブラウザで確認。GoogleChromeのデベロッパーツール(初めから入っています)で確認するのがおすすめです。header.phpのコメントが表示されるならひとまずheader.phpが読み込まれていることは確認できるでしょう。

変数を使おう!

「なんだか同じような文を繰り返し書いているな~」と頭に少しでもよぎったら、書き方を工夫する癖をつけましょう。これはプログラミング全般において言えることです。

PHP

1<?php 2$style_path = null; //スタイルシートへのパス 3if (条件1) { 4 $path = "A"; 5} else if(条件2) { 6 $path = "B"; 7} else if(条件3) { 8 $path = "C"; 9} else { 10 $path = "S"; 11} 12// print($path); <-このようにすればどんなパスが指定されているかデバッグで確認できる。 13?> 14<link rel="sylesheet" href=<?= $path?>/>

みたいなイメージで書く方がデバッグがしやすいです。

そもそももっと良い方法が!

function.phpwp_enqueue_style関数を使ってスタイルシートを読み込ませる方法が一番良い方法でしょうね👀
私はいつもそうやっています。
やろうと思えば、固定ページのファイルとcssのファイルをフォルダごとに分けることだってできます(私はそうしてます)

下記のページは結構参考になるかな?
https://thewppress.com/libraries/enqueue-styles/

またわからなかったら返信ください^^

投稿2022/01/27 23:55

HiraKazu1124

総合スコア322

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問