まず基本として、現在表示しているページを判別しなければなりません。そこでifを使用して、現在のページを判定します。
以下が基本形。
<?php if(○○○); ?> //判定がオッケーなら実行する内容 <?php else; ?> //判定がだめなら実行 <?php endif; ?>
○○○の中に判定基準を入れます。ある程度は決まった条件が揃ってるので、大抵は決まった条件タグを入れるだけ。
まずはトップページの判定を例に記述内容を確認。
is_home()でトップページかどうかを判別できます。
<?php if(is_home()); ?> //トップページが表示されている場合 <?php else; ?> //それ以外 <?php endif; ?>
ただ、これだとトップページをページ分割している場合などは、2ページ以降もトップページと認識されます。
なので、純粋に1ページ目だけを指定したい場合は、同時に「ページ分割されたページではない」判定をします。記述だと「 && !is_paged() 」となります。&&は「AND」って意味で、「is_homeに加えて!is_pagedならば」って意味になりま す。!is_pagedは、!が「等しくない」って感じの意味で、is_pagedはページ分割されたページ(2ページ目以降)かを判別します。要するに 「ページ分割されたページじゃなければ」ってことですね。
<?php if(is_home() && !is_paged()); ?>
is_single()で個別記事かどうかを判別できます。()内に記事IDを記述するとさらに絞り込み可能。
<?php if(is_single("記事のID")); ?>
is_page()で個別記事かどうかを判別できます。()内に固定ページのタイトルやIDを記述するとさらに絞り込み可能。
<?php if(is_page("個別記事のタイトルとかID")); ?>
is_category()でカテゴリーアーカイブページかどうかを判別できます。()内にカテゴリ名やIDを記述するとさらに絞り込み可能。
※ここで注意なのが、あくまでページの判定である点。カテゴリーアーカイブページであるか否かを判定しているのであって、カテゴリーの種類だけで判別はし ていない。よって、is_category(“example”)は「exampleカテゴリーのアーカイブページであるかどうか」で、exampleカ テゴリーかどうかだけでは判別されない。個別記事などでカテゴリー別に処理を行いたい場合などに間違えて使うことがよくある。個別記事などの投稿ごとの所 属カテゴリの判別には「 in_category() 」を使用する。
<?php if(is_category("カテゴリー名とかID")); ?>
is_month()で月別アーカイブページかどうかを判別できます。他にも年別「is_year()」とか日別「is_date()」とかある。
<?php if(is_month()); ?>
タイトルの分岐でよく使うのはだいたいこの辺り。
もっといろいろ知りたい人は、条件分岐タグ – WordPress Codex 日本語版へどうぞ。
こ こからは、ぶっちゃけ人それぞれというかサイトによってタイトルに出したい情報が変わってくると思います。更に、テンプレートタグは種類が多く、いろんな 使い方ができるため、ここで書いてある方法が正しい使い方になってるかは自信ありません。また、ループ中やループ外によっても使用タグが変わってきたりし て結構複雑です。なので、とりあえず本サイトの例を上げときます。
<?php if(is_home()): ?> <title>CREATIVE BLOG by SeeVisions</title> <?php elseif(is_page()): ?> <title>このサイトについて|CREATIVE BLOG by SeeVisions</title> <?php elseif(is_single()): ?> <title><?php wp_title(''); ?>|CREATIVE BLOG by SeeVisions</title> <?php elseif(is_category()): ?> <title><?php single_cat_title() ?>の記事一覧|CREATIVE BLOG by SeeVisions</title> <?php elseif(is_month()): ?> <title><?php the_time("Y年m月") ?>の記事一覧|CREATIVE BLOG by SeeVisions</title> <?php endif; ?>
もっとちゃんと設定しろよって話ですけど、取りあえずはこんな感じでも問題ないはず…
※補足としては、<?php elseif(); ?>というのが出てきましたけど、これは前の条件に合わなければ、次の条件を更に設定するもの。
上のコードだと、まず「トップページなら」で分岐、次に「トップページじゃなくて、固定ページなら」で分岐、次に「トップページじゃなくて、固定ページでもなくて、個別記事ページなら」って感じです。正しい訳かは分からないけど、そんなに間違ってもないと思います。
wp_title( ” )で現在表示しているページのタイトルが表示できる。
これはテンプレートによって書き出す内容が変わり、個別記事なら投稿タイトル、カテゴリアーカイブページならカテゴリ名になるので、特にこだわりないので あれば取りあえずこのタグを入れておけばなんとかなる。()内で引数を指定することができる。なにも入れないとタイトル前に「≫」が表示されるので、いら ない人は「”」と何もいれず、シングルクォーテーションで括るだけにしとけばOKです。
また、「single_post_title() 」でも投稿タイトルを表示可能。ただし、個別記事ページでしか機能しないので、それ以外のページだと何も出力されなくなるので、注意。今回のように個別記事ページでの処理に限るなら利用可能。
ちなみに、ヘッダーでの記述なので、基本的にはループ外になるので、「the_title()」は使えません。
<?php wp_title(''); ?>
<?php single_cat_title() ?>で現在表示しているカテゴリアーカイブページのタイトルが表示できる。カテゴリーアーカイブなのにsingleって付いてるのでややこしいです が、このタグはカテゴリーアーカイブページで機能するので、個別記事ページで所属カテゴリ絵名を出したい場合などは使えません。カテゴリーの扱いは、 WordPressの中でも複雑でちょっと難しいと思ってるので、後でカテゴリーに関するエントリーをまとめようと思います。
<?php single_cat_title(); ?>
<?php wp_title() ?>で 現在表示している月別アーカイブページの日付が表示できる。
先ほどは投稿タイトルとして機能していたが、表示ページが月別アーカイブの時は、表示している年と月が表示される。ところが、このタグだと表示部分の カスタムができず、2012 2月という表示になる。これを2012年2月などのように変えたい場合は、別のタグを使用する必要がある。
しかし、ループ外で月別の日時を表示するタグが無いため、the_time()を使用する。本来ループ内で使用するタグだが、一応機能はする。このタグであれば()内に表示方法を記述してやれば、自由に日付を表示できる。()内の記述は、PHP: date – Manualを参照してください。
<?php wp_title(); ?>
<?php the_time("Y月m月"); ?>
以上が本サイトにて使用している、タイトルの記述です。
まぁ、もっといろいろカスタマイズは出来ると思いますし、SEO的にもやれることはあると思いますが、基本としてはこんなところを抑えておけば間違いないかと思います。
テンプレートタグについてもっと知りたい方は以下のサイトをご覧ください。
テンプレートタグ – WordPress Codex 日本語版
WordPressでのページの種類によって処理分岐する方法 その1【ページタイトル編】はこのくらいで、
次は、その2【パンくずリスト編】をやろうかと考えています。
もし少しでもお役に立てたなら、下記のいいねボタンとか押していただければと思います。押してください。
ここまで読んでいただきありがとうございました。