WordPressオリジナルテーマでページ毎に異なるcssファイルを読み込む

Date:2009.10.19

Author:イノマタ

Category:WordPress

Tag:, , ,

WordPressオリジナルテーマでページ毎に異なるcssファイルを読み込む

Giraffyで作成したオリジナルテーマでは、全ページ共通して読み込んでいるのは、style.css ですが、他にも各ページ毎に違うcssファイルを読み込ませています。
ページ毎のcssファイルは、テーマフォルダにcssフォルダを作成して準備しました。

  • home.css
  • blog.css
  • page.css

それぞれ、名前のとおりhome用、Blog用、その他ページ用として作成されています。

これを、条件分岐タグを使用して header.php で使用するcssファイルを切り替える…という技(?)のメモです。

どのページにcssを読み込ませるかを整理&下準備

今回用意したのは3種類。

  • TOPページ用にhome.css
  • Blogページ用にblog.css と page.css
  • 上記以外のページにpage.css

こんな風に読み込ませたいと思います。

まずは、条件分岐を使う前に、blog.css を読み込むときに page.css をインポートするように設定しておきます。

blog.cssの先頭行に以下を追加します。

1
2
/* page.css  をインポートします */
@import url("page.css");

これで、下準備はOK。

blog.css に page.css をインポートしたことで、cssファイルを読み込ませる条件は以下のようになりました。

  • TOPページ用にhome.css
  • Blogページ用にblog.css
  • 上記以外のページにpage.css

header.php に cssファイルをリンクする

WordPressでは、cssファイルはデフォルトではテーマフォルダの直下にある style.css ということになっているので、共通するスタイルを style.css というファイル名で作成して、テーマフォルダの直下 ( themes/giraffy/style.css ) に配置しました。

style.css を header.php に読み込ませる:

1
<link href="<?php bloginfo(‘stylesheet_url’); ?>" rel="stylesheet" type="text/css" />

これで、共通用のcssファイルの読み込みは完了です。

次に、3種類のcssファイルを読み込ませます。

3種類の cssファイルを header.php に読み込ませる:

1
2
3
<link href="<?php bloginfo(‘template_directory’); ?>/css/home.css" rel="stylesheet" type="text/css" />
<link href="<?php bloginfo(‘template_directory’); ?>/css/blog.css" rel="stylesheet" type="text/css" />
<link href="<?php bloginfo(‘template_directory’); ?>/css/page.css" rel="stylesheet" type="text/css" />
1
<?php bloginfo('template_directory'); ?>

は、使用中テーマファイルディレクトリのURLを出力するためのテンプレートタグです。

これでOKではありません。
このままだと、全ページに3つのcssが読み込まれてしまうので、この3つを条件タグを使用して分岐させます。

条件タグは以下のように準備されています。
(WordPress Codex 日本語版 から一部抜粋)

is_home()
メインページ(ブログのホームページ)が表示されている場合。
※管理画面の「表示設定」で固定ページをフロントページに設定した場合、このタグは投稿ページのトップページに適用されます
is_front_page()
サイトのフロントページが表示されている場合。これは、投稿の場合とページの場合があります。管理画面の「設定 > 表示設定 -> トップページの表示」で、「最新の投稿」が選択されているか、「固定ページ (以下を選択)」で現在のページが表示されている場合。
is_page()
ページ(投稿ではない)が表示されている場合。

今回はこの3つの条件タグを使用します。

条件タグを使って、読み込ませるcssファイルを変更する

いよいよ、cssファイルを各ページ毎に分岐させます。
その前に、いまのページ構成をしっかり整理します。

Giraffyでは、TOPページをフロントページに固定して、投稿ページをBlog(ページテーマ)に固定しています。

この時点で、WordPress側では以下のような解釈をすると思われます。

  • TOPページ —> is_front_page()
  • Blogページ —> is_home() と is_page()ではない(投稿ページ)
  • その他ページ(固定) —> is_page()

Blogページが少々厄介なのですが、BlogとしてのTOPページは is_home() ですが、単一記事のページやカテゴリーページは is_home() にはなりません。
そのため、Blogページは is_home() であり、かつ、is_page() ではないという条件になります。

※『◎◎ではない』ということを表現するには、先頭に”!”を入れる必要があります。(例) !is_page()

それらをふまえて、3つのcssファイルの読み込み部分をこのように記述しました。

3種類の cssファイルを条件分岐する:

1
2
3
4
5
6
7
8
9
10
11
12
<link href="<?php bloginfo(‘template_directory’); ?>/css/<?php
if (is_front_page()) {
// フロントページだった場合
echo ‘home’;
} elseif (is_home() || !is_page()) {
// 投稿ページのトップページ、かつ固定ページ以外のページだった場合
echo ‘blog’;
} else {
// 上記以外の場合
echo ‘page’;
}
?>.css" rel="stylesheet" type="text/css" />

条件タグで分岐させて、条件に合致した場合、該当する cssファイルの名前の部分を echo しています。

今回は作ったテーマも簡単で、表示パターンが3種類しかなかったのでこのように比較的単純な分岐になりました。

このように、分岐タグは「ここだけこうしたい!」といった要望に応えてくれます。
一度使ってコツを覚えると、いろんなところに応用できます。

この記事へコメントを投稿する

※コメントはスパム対策の為、承認制となっています。あらかじめご了承ください。

 

トラックバック/ピンバック

トラックバックURL