【Cocoon】カテゴリー毎に表示中のページタイトルとサイトタイトルを変更する方法

雑記ブログなど、幅広いジャンルでサイトを運営している場合、サイト名も分かりやすい方が検索した人も見たいと思いますよね?

例えば、当サイトはサイト名が「D’s World」ですが、名前だけ見ても何のサイトか分かりづらいです。しかし、サイト内のWordPressカテゴリーページを開くと、サイト名が「WordPress攻略ブログ」に変わります。

見たいと思わせるちょっとした工夫が、SEOにも大きく関わってきます。

このページでは、WordPressテーマの「Cocoon」で『カテゴリー毎に表示中のページタイトルとサイトタイトルを変更する方法』について、貼り付けるコードとカスタマイズする方法を解説していきます。

※Cocoon以外でも対応可能だと思いますが、修正が必要かもしれません。

貼り付けるコードとカスタマイズ方法

貼り付けるコードは長いですが、カスタマイズ方法さえ分かればタイトル変更は簡単です。

コードと貼り付け場所

まず、以下のコードを丸ごと子テーマのfunctions.phpに貼り付けます。

// カテゴリー毎に表示中のページタイトル・サイトタイトルのカスタマイズ
function title_parts_custom( $title ){
  $site_name = trim( get_bloginfo('name') );
  $title['tagline'] = '';

  if(is_front_page()){ //フロントページ
    //自由形式タイトルの場合
    if (is_free_front_page_title()) {
      $title['title'] = esc_html( get_free_front_page_title() );
    } else {//自由形式でないとき
      $title['title'] = $site_name;
      $title['site'] = '';

      if ( is_tagline_to_front_page_title() )://キャッチフレーズを追加する場合
        $title['tagline'] = trim( get_bloginfo('description') );
      endif;
    }

  } elseif (is_singular()) { //投稿・固定ページ
    $title['title'] = trim( get_the_title() );
    //SEO向けのタイトルが設定されているとき
    if (get_the_page_seo_title()) {
      $title['title'] = get_the_page_seo_title();
    }
    $title['site'] = '';
    if ($simplified_site_name = get_simplified_site_name()) {
      $site_name = $simplified_site_name;
    }
    switch (get_singular_page_title_format()) {
      case 'pagetitle_sitename':
        $title['site'] = $site_name;
        break;
      case 'sitename_pagetitle':
        $title['title'] = $site_name;
        $title['site'] = trim( get_the_title() );
        break;
    }
	if(!empty($_GET[id]) && (!empty($_POST[card_name_title]))) {
		$title['title'] = $_POST[card_name_title];
	} else {
		$title['title'] = trim( get_the_title() );
	}

	$cat = get_the_category();
	$cat = $cat[0];
	$cat_id = $cat->cat_ID;
	$findFlg = true;
	$title = setNewTitle($title, $cat_id, $findFlg);  
	if ($findFlg == false) {
		$title['site'] = $site_name;
	}

  } elseif (is_category()) { //カテゴリー
    $cat_id = get_query_var('cat');
    $cat_name = $title['title'];
	$title['title'] = '記事一覧'; // カテゴリーページで表示するページタイトル	
	$findFlg = true;
	$title = setNewTitle($title, $cat_id, $findFlg);  
	if ($findFlg == false) {
		$title['site'] = $site_name;
		$title['title']= $cat_name;
	}
	  
  } elseif (is_404()) {
    $title['title'] = get_404_page_title();
  };

  return $title;
}

// 表示タイトルの設定
function setNewTitle( $title, $cat_id, &$findFlg ) {
	// 該当するカテゴリーIDのタイトルを設定する
	if ($cat_id == 815) {
		$title['site'] = 'WordPress攻略ブログ';
	} elseif ($cat_id == 774) {
		$title['site'] = 'アフィリエイト攻略ブログ';
	} elseif ($cat_id == 233 || post_is_in_descendant_category(233)) {
		$title['site'] = 'ドラクエライバルズ攻略';
	} else {
		$findFlg = false;
	}	
	
	return $title;
}

// 渡された親カテゴリーIDの子カテゴリーかどうか
function post_is_in_descendant_category( $cats, $_post = null ){
   foreach ( (array) $cats as $cat ) {
         $descendants = get_term_children( (int) $cat, 'category');
          if ( $descendants && in_category( $descendants, $_post ) )
              return true;
   }
   return false;
}

カスタマイズの解説

カテゴリーページで表示するページタイトルは以下のコードの場所で修正できます。
変更する場合は「記事一覧」の部分を好きなタイトルに変えてください。

	$title['title'] = '記事一覧'; // カテゴリーページで表示するページタイトル

カテゴリーページ及び各記事ページでのサイトタイトルの変更は「setNewTitle」メソッド内で修正できます。

修正するにはまず、サイトタイトルを変更したいカテゴリーのIDを調べます。
カテゴリーIDは、カテゴリーの編集ページでURLの『tag_ID』から確認ができます。

画像では、『フリーランス』のカテゴリーIDは『811』と確認できます。

カテゴリーIDを確認したら、setNewTitleメソッド内でカテゴリーIDと表示するサイトタイトルを修正していきます。

	// 該当するカテゴリーIDのタイトルを設定する
	if ($cat_id == 815) {
		$title['site'] = 'WordPress攻略ブログ';
	} elseif ($cat_id == 774) {
		$title['site'] = 'アフィリエイト攻略ブログ';
	} elseif ($cat_id == 233 || post_is_in_descendant_category(233)) {
		$title['site'] = 'ドラクエライバルズ攻略';

「$cat_id == 815」の番号の部分を確認したカテゴリーIDに変更します。
その後、「WordPress攻略ブログ」の部分を表示したいサイトタイトルに変更します。

同様に次の行の「$cat_id == 774」の部分と「アフィリエイト攻略ブログ」の部分にも設定していきます。必要なカテゴリーの分だけ以下の2行をコピーして増やします。

	} elseif ($cat_id == 774) {
		$title['site'] = 'アフィリエイト攻略ブログ';

以下のコードは、指定したカテゴリーIDの子カテゴリーにも同じサイトタイトルを設定できます。

	} elseif ($cat_id == 233 || post_is_in_descendant_category(233)) {
		$title['site'] = 'ドラクエライバルズ攻略';

「$cat_id == 233」と「post_is_in_descendant_category(233)」の数字の部分に同じカテゴリーIDを指定してください。必要であれば必要な分だけコピーを、必要がなければ削除してください。

文章の説明だけですと分かりづらいかと思いましたので、setNewTitleメソッド内で実際に私の設定しているコードを載せておきます。

// 表示タイトルの設定
function setNewTitle( $title, $cat_id, &$findFlg ) {
	
	if ($cat_id == 811) {
		$title['site'] = 'フリーランス攻略ブログ';
	} elseif ($cat_id == 815) {
		$title['site'] = 'WordPress攻略ブログ';
	} elseif ($cat_id == 774) {
		$title['site'] = 'アフィリエイト攻略ブログ';
	} elseif ($cat_id == 833) {
		$title['site'] = '退職前に見てほしいブログ';
	} elseif ($cat_id == 822) {
		$title['site'] = 'ビジネスブログ';
	} elseif ($cat_id == 39) {
		$title['site'] = 'IT・ガジェット情報';
	} elseif ($cat_id == 823) {
		$title['site'] = 'ゲームニュース';
	} elseif ($cat_id == 695) {
		$title['site'] = 'FORTNITE攻略';
	} elseif ($cat_id == 233 || post_is_in_descendant_category(233)) {
		$title['site'] = 'ドラクエライバルズ攻略';
	} elseif ($cat_id == 101 || post_is_in_descendant_category(101)) {
		$title['site'] = 'シャドバ攻略';
	} elseif ($cat_id == 65) {
		$title['site'] = 'ドラクエブログ';
	} elseif ($cat_id == 198) {
		$title['site'] = 'FFブログ';
	} elseif ($cat_id == 27) {
		$title['site'] = 'サガブログ';
	} elseif ($cat_id == 110) {
		$title['site'] = 'モンハンワールド攻略';
	} elseif ($cat_id == 409) {
		$title['site'] = 'ゲーム評価・感想・レビューブログ';
	} elseif ($cat_id == 751) {
		$title['site'] = 'ゲーム情報ブログ';
	} elseif ($cat_id == 867) {
		$title['site'] = '速うまシューターブログ';
	} elseif ($cat_id == 863) {
		$title['site'] = '競馬ブログ';
	} elseif ($cat_id == 20) {
		$title['site'] = '将棋情報';
	} elseif ($cat_id == 91) {
		$title['site'] = 'エンターテインメント情報';
	} elseif ($cat_id == 812) {
		$title['site'] = '楽しく生きるための思考法';
	} else {
		$findFlg = false;
	}	
	
	return $title;
}

 

設定が終わったら、各カテゴリーページと記事ページでページタイトル及びサイトタイトルが変わっていることを確認します。
ブックマークに追加してみると変更されているかどうか分かりやすいです。

カテゴリー毎に表示中のページタイトルとサイトタイトルを変更する方法の解説は以上です。
お疲れ様でした。

 

参考サイト

カテゴリー毎に表示中のページのタイトルを変更したい
現状、投稿ページを表示すると、『ページタイトル|サイト名』のような感じに表示されます。これを、表示したページのカテゴリーが「ゲーム」の場合、 『ページタイトル|ゲーム情報』などのようにサイト名の部分を表示中ページのカテゴリー毎に変更できるようにしたいのですが、どのようにしたらよろしいでしょうか? お...
特定の親カテゴリとその子カテゴリのみに反映させたいとき
特定の親カテゴリとその親カテゴリに属する子カテゴリの個別記事(single.php)だけに反映させるときの条件…
スポンサーリンク