WordPressを始めたばかりの頃って、各ページの「ページタイトル部分」ってテキストでしか動的に出力できないと思っていました。
ページタイトルを画像にしたい時には、テンプレートに直書きして、ページの数だけテンプレートファイルを用意しないといけないとか…。
でも、慣れてくるといろいろ気づくもんですね。スラッグ名を出力すれば出来るんじゃないかと思って調べたらやっぱり出来ました。
用途としては、
- コーポレートサイトを想定
- 固定ページの場合は、そのページのタイトル(ただし子ページの場合は、親ページのタイトル)
- 投稿シングルページの場合は、属しているカテゴリ名
- カテゴリアーカイブの場合は、そのカテゴリ名
という感じで。
1. タイトル画像を準備
title_*****.jpg というファイル名で、タイトル画像を用意します。
**** の部分は、ページやカテゴリのスラッグ名にします。この****の部分を動的に出力するという作戦です。
2. single.php
変更前の記述(例)
php the_category('') ?>
↓
変更後の記述
応用:single.phpで、子カテゴリーの場合も親カテゴリーの画像を使う
(※2013.12.04追記。マークアップは好きに変えてくださいな。)
if ($cat[0]->category_parent)
で、親カテゴリーを持っているか(つまり自分が子かどうか)を判定しています。
3. index.php または archive.php
変更前の記述(例)
<?php if(is_category()): ?> <h1>『<?php single_cat_title(); ?>』カテゴリーの投稿一覧</h1> <?php endif; ?>
↓
変更後の記述
応用:index.phpやarchive.phpで、子カテゴリーの場合も親カテゴリーの画像を使う
※category.phpの場合はis_categoryは不要だよ
4. page.php
変更前の記述(例)
<h1><?php the_title(); ?></h1>
↓
変更後の記述
応用:page.phpで、子ページの場合も親ページの画像を使う
#2012.02.29 一部修正
bloginfo(‘template_url’); → echo get_template_directory_uri(); に書き換え
注意事項
- 1つの投稿が複数カテゴリーに属することは想定してない
- 孫ページや、さらに階層が深くなる場合も想定してない
- category.phpを作る場合はif分岐しなくていい