wordpressにて、個別記事のカテゴリーごとにページのヘッダーを切り替える

 ブログのタイトルや簡単なあらましが書かれているヘッダー。この部分をページの属するカテゴリーごとに切り替える方法を解説します。

カテゴリーごとにヘッダーを分けるメリット

 世の中に星の数ほどあるブログを乱暴に二分化すると「専門性の高いブログ」と、「いろんな分野を手広くかじってみるブログ」に分かれます。専門性が高くテーマが絞られているブログであれば、ヘッダーは一種類あれば十分でしょう。

 一方、手広くかじったごった煮ブログの場合。
たとえばこのブログもそういったタイプのブログですが、それぞれ親和性もつながりもないようなジャンルの記事が入り乱れています。
 ヘッダーを分けていなかった場合、ゲーム攻略記事のトップに戻りたい人がブログタイトルを押すと、各方面につながる幹たるトップページ飛ばされ迷子になるわけです。

 このサイトにゲームの攻略記事を見に来ていた人は、極論、日記やweb作成記事に興味なんてないのです。ゲームの攻略記事にはそれ専用のヘッダーを充てがい、そのカテゴリー用のトップページにリンクさせておく方が構造的にわかりやすいはず。

 ヘッダーはある種の案内看板と言えます。

切り替え用のサブのヘッダーを作る

 「header.php」がヘッダーを構成するPHPファイルです。 まずはこれを複製し、名前を「header-◯◯.php」に変更したものを用意します。
 ◯◯は任意です。この新しいファイルが切り替え用のサブヘッダーとなります。以降の説明では「header-2.php」という名称を使っていきます。

 次に「header-2.php」を好みの表示に作り変えます。 あくまで一例ですが、たいていのテーマであれば中を読み進めていくと以下の記述があるはずです。この辺りを適宜コメントアウトしながら編集してゆくと良いでしょう。

  • <?php bloginfo('name'); ?> … ブログ名を出力する
  • <?php bloginfo('description'); ?> … ブログの説明文を出力する

 カテゴリー別のヘッダーを作るわけですから、ページの最上部にはカテゴリー名の表示が欲しくなるかもしれません。 以下の記述でリンク付きのものが出力されます。スタイルはテーマにあったものを各自クラス等を指定して付け足してください。

<?php
$cat = get_the_category();
$cat = $cat[0];
echo '<a href="' . get_category_link($cat->term_id) . '">' . $cat->name . '</a>';
?>

サブのヘッダーを表示させるための分岐を作る

 個別記事は「single.php」を参照して出力されます。
なので「single.php」の中からヘッダを読み込む記述を探し、そこに分岐を組み込みます。以下の記述を探してください。

<?php get_header(); ?>

 これが「header.php」を読み込むコードです。ここを以下の記述を参考に変更してください。

<?php
if (is_category('雑記')) {
get_header('2');
}
else if (is_category('ブログ')) {
get_header('3');
}
else {
get_header();
}
?>

 上記の記述であれば、カテゴリが「雑記」の場合は「header-2.php」が、「ブログ」の場合は「header-3.php」が、それ以外の場合は「header.php」が読み込まれます。
 もし分岐が多い場合は4行目の「else if」から6行目の「}」にあたる部分を削除します。逆に分岐がもっと欲しい場合はこの部分を繰り返します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA