【WordPress】title(タイトル)タグの内容をif文でページごとに出しわける

どうも、くまだです。

前回、前々回とif文で出し分ける記事を書きましたが、今回もif文を使った内容です。if文を使ってtitleタグの内容をページごとに出しわける処理をします。

下はif文系の過去記事です。

タイトルタグの内容をif文で出しわけ

タイトルタグ<title>○○</title>の○○の部分をページごとに出しわけます。

トップページであればサイト名が表示され、下層ページになると以下のような表示にしたい。

  • サイト名 | 下層ページのタイトル

例えばお問い合わせページであれば、以下みたいな感じ。

  • サイト名 | お問い合わせ

header.phpのmetaタグのtitleタグ部分を以下のようにテンプレート化してget_template_part();で読み込む。

get_template_part();は、テンプレートパーツを読み込む関数です。

<!-- header.php -->

<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <!-- meta -->
  <?php get_template_part('template/title'); ?>
  <meta name="description" content="○○○○" />
 
~~~~~~~~~省略!

</head>

titleタグを丸ごと、例えば「templateフォルダ」の中に「title.php」というファイルをつくってそこに貼り付け。

<!-- title.php -->

<title>
  <?php bloginfo('name'); ?>
  |
  <?php global $page, $paged;
  if (is_front_page()) : //トップページ 
  ?>
  キャッチコピー
  <?php
  elseif (is_page('〇〇') || is_page('△△')) :
    wp_title('');
  elseif (is_post_type_archive('〇〇')) : ?>
  カスタム投稿のタイトル
  <?php elseif (is_home('')) :
    wp_title('');
  ?>
  <?php elseif (is_single('')) : ?>
  <?php wp_title(''); ?>

  <?php
  elseif (is_404()) : //404ページ
    echo '404';
  // bloginfo('name');
  endif;
  ?>
</title>

is_front_page();で、表示されているのがフロントページ(トップ)ならトップページ用のタイトルを出力します。フロントページでなかったら次のelse if条件式に行き、該当すればそのページのタイトルタグが出力されます。

wp_title(”)は管理画面で設定したタイトル部分です。

さらに条件式に該当しなければ、次の、という感じでタイトルタグの中身を出しわけることができます。

<?php elseif (is_○○)?>の○○のところでページごとにいろいろ出し分けできます。

カテゴリページだったらis_category、タクソノミーページだったらis_taxとか。

テンプレで1つ作っておくと制作のとき楽です。

ここまで読んでくださりありがとうございました。

この記事を書いた人