WordPressのカスタム投稿アーカイブページのタイトルの設定方法について

キービジュアル

目次

こんにちは、オトナ帝国です。

今回はアーカイブ関連のページについてのtitle問題を解決したかった件について。

wp_title()関数でheader.php内で表現していたのですが、Wordpressそもそもの仕様にかなり振り回されて、、何とも言えない感じになってました。

アーカイブページのtitle問題

そもそも、何が問題かというと、主にカスタム投稿系のページなんですよね。

例えば、カスタム投稿タイプ「test」というものが作られた場合にどうなるのか、今までは下記のソースでやってました。

//phpファイル
<title>
<?php
global $page, $paged;
if (is_post_type_archive('test')) : //testアーカイブページ
  wp_title('テスト|', true, 'right');
  bloginfo('name');
?>
</title>

bloginfo('name');はここでは「オトナ帝国」になるので、ここで目指したい形は下記になります。

テスト|オトナ帝国

がタイトルで実現したい内容でした。

が、実際には

test テスト|オトナ帝国

となってしまいました。

カスタム投稿名のtestもくっついてきちゃうんですよね・・・困った通り越してうっとうしい・・

JSで無理やりtitleの文字列を変えることもできるのですが、そもそもブラウザ上で動かす領域ではないので、あまり気乗りしない・・

あ、そうだそもそも作りから変えていこうと思います。

まとめると、Wordpressの仕様に振り回されずに自由にタイトル設定を行いたいがやりたいことです!

解決方法(カスタム投稿アーカイブ・タクソノミーアーカイブ)

そもそもwp_title()関数なんて使わなければいいか、となりました。よくよく調べてみると、非推奨の時期もあったようなので、この関数をまず諦めることにしました。

//phpファイル
<title>
<?php
global $page, $paged;
if (is_post_type_archive('test')) : //testアーカイブページ
  echo("Topics|");
  bloginfo('name');
elseif  (is_tax("testTaxonomy", "testSlug")) : //testSlugアーカイブページ
  echo("好きな文字列|");
  bloginfo('name');
?>
</title>

echo()で文字列呼び出す、だと何か問題があるのだろうか、いやないとなりました(笑)

で、分岐の定義をしっかり行うことでやりたいことは解決するという判断です。

カスタム投稿の条件分岐処理

カスタム投稿タイプ:testは下記になります。

//phpファイル
if (is_post_type_archive('test')) : //testアーカイブページ

カスタム投稿のタクソノミースラッグ条件分岐処理

カスタム投稿のタクソノミー名:testTaxonomy・スラッグ:testSlugの場合下記になります。

//phpファイル
if  (is_tax("testTaxonomy", "testSlug")) : //testSlugアーカイブページ

最後に

今回はアーカイブページのtitleの設定関連をまとめました。wp_title()関数はどうも非推奨みたいな話もあるみたいですね。そうでない話もありました。

いずれにせよ、少しwp_title()関数の中身を動かしに行く手法も考えたのですが、デフォルトの関数はあまりいじらないほうがいいので、今回は少しひねって解決しました。

もちろんfunction.phpをいじっていく方法もあると思いますが、個人的にはこっちのほうが簡単&function.phpは影響範囲が広いことを鑑みると、、こっちのほうがいいのかなと思います。

何かの参考になれば幸いです。

それでは~★

カテゴリーから記事を探す