Standing on the Shoulder of Linus

Home / 2012 / 6月 / 12 / テンプレート階層に応じたスタイルシートを出力する方法

テンプレート階層に応じたスタイルシートを出力する方法

テンプレート階層に応じたスタイルシートを出力する方法です。index.php では index.css, category-news.php では category-news.css といったふうに、テンプレート毎にスタイルシートを変えることができます。

グローバル変数を取得してごにょごにょする、という力技です。(ソースコードはgist でも入手できます)

add_action('wp_head','page_template_css') ;
// Copyright : Fumito MIZUNO http://php-web.net/
// License : GPL ver.2 or later
function page_template_css() {
global $template;
$dir = '/css'; // (テーマ配下の)スタイルシートを入れるディレクトリを設定する
$pos = strrpos($template, "/");
$template = substr($template, $pos);
$filename = str_replace('php', 'css', $template);
$fullfilename = get_stylesheet_directory() . $dir . $filename; 
	if (file_exists($fullfilename)) {
	    print '<link rel="stylesheet" type="text/css" href="' . get_stylesheet_directory_uri() . $dir . $filename . '" />';
	    print "n";
	}
}

WordPress には、テンプレート階層という便利な機能があります。これによって、このページにはこのテンプレート、あのページにはあのテンプレート、といったことができます。とはいえ、header.php はほぼ共通というけーすもあるでしょう。そういう場合、このコードを functions.php に書くと、header.php にテンプレート階層毎に異なる CSS を追加してくれます。

テンプレート階層自体は、PHP ファイルの有無で決まります。このため、問い合わせの固定ページテンプレートが page.php だが CSS は page-inquiry.css という使い方には対応していません。 page.php なら page.css が読み込みされます。

なおテーマによっては動作しないかもしれませんのでご注意ください。

関連

Posted in WordPress | Tagged スタイルシート, テーマ
← FuelPHP 勉強会 大須 vol.1 開催しました WordPress フォーラムで投稿数の多いユーザー ver.3.4 →

アーカイブ

人気の投稿とページ

  • キンドル本を印刷する(PDFに変換する)方法
  • 名古屋駅から国際センターまでの道のり(徒歩)
  • AGPL ライセンス(GPLとは似ているが違いもある)
  • 6年使ったイーモバイル(Y!mobile)を解約手続。店頭でSIM返却
  • JP-Secure SiteGuard WP Pluginは不正ログイン防止に役立つか

プロフィール

水野史土:月70万PVホームページ制作会社のレスキューワーク株式会社で、PHPソフトウェアのサポートを行っている。concrete5コミュニティリーダー、Novius OSコアコード貢献者でもある。 詳しくは管理者詳細参照。
大好評WordPress書籍「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」サポートページ

Copyright © 2015 Standing on the Shoulder of Linus.