THE THORで記事タイトルからサイト名を外す方法

  • 2026年9月21日
  • PHP
PHP THE THORで記事タイトルからサイト名を外す方法

THE THORで記事を書くと、タイトルの後ろにサイト名が付きます。

スポンサーリンク

「記事タイトル│サイト名」という形です。

トップページなら自然ですが、記事ページでは邪魔になることがあります。検索結果でタイトルが途中で切れてしまうからです。

自分のサイトで確認したところ、切れている記事がいくつもありました。外す方法をまとめます。

  1. サイト名が付くと何が困るのか
  2. 記事ごとに外す方法とその限界
  3. 子テーマで全記事から外す方法
  4. 外したあとに確認すること

サイト名のぶんだけ、タイトルが削られます。

検索結果に表示されるタイトルには、長さの限界があります。

日本語だと、だいたい30文字前後で切られて「…」になります。スマートフォンではもう少し短くなります。

ここに区切り記号とサイト名が入ると、その文字数がまるごと削られます。

【元のタイトル】
イメージマップの作り方!画像に複数のリンクを貼り、レスポンシブにも対応させる!

【出力されるタイトル】
イメージマップの作り方!画像に複数のリンクを貼り、レスポンシブにも対応させる!│i-f - Web Works -

サイト名が長いほど、影響が大きくなります。

検索する人が見ているのは記事のタイトルです。サイト名は、その下のURL部分にも出ています。二重に出す必要はありません。

スポンサーリンク

記事ごとに外す方法。

THE THORには、記事ごとのSEO設定があります。

投稿の編集画面を下にスクロールすると「SEO設定」の欄があり、そこでタイトルにサイト名を入れるかどうかを切り替えられます。

1本だけ直したいなら、これが一番早いです。

ただ、この方法には限界があります。

  • 記事の本数だけ手作業が発生する。
  • 新しく記事を書くたびに、設定を忘れないようにする必要がある。
  • この設定はカスタムフィールドに保存されるため、過去記事には値が入っていない。

記事が100本あるなら、100回開くことになります。

全部まとめて外したいなら、子テーマで処理したほうが確実です。

スポンサーリンク

子テーマで、記事ページだけサイト名を外します。

WordPressには pre_get_document_title というフィルターがあります。

<title> タグに出力される直前の文字列を、書き換えられます。

子テーマの functions.php に、次のコードを追加します。

<?php
/**
 * 記事ページのタイトルからサイト名を外す
 */
function my_strip_sitename_from_post_title( $title ) {

	// 記事ページ以外はそのまま返す
	if ( ! is_singular( 'post' ) ) {
		return $title;
	}

	// THE THOR の区切り記号を取得する
	$sep = function_exists( 'fit_title_separator' ) ? fit_title_separator() : '│';

	$suffix = $sep . get_bloginfo( 'name' );
	$len    = strlen( $suffix );

	// 末尾が「区切り記号+サイト名」のときだけ切り落とす
	if ( $len > 0 && strlen( $title ) > $len && substr( $title, -$len ) === $suffix ) {
		$title = substr( $title, 0, -$len );
	}

	return $title;
}
add_filter( 'pre_get_document_title', 'my_strip_sitename_from_post_title', 20 );

これで、記事ページのタイトルからサイト名が消えます。

ポイントは3つあります。

1. 優先度を20にしています。

THE THOR自身がタイトルを組み立てたあとに動かす必要があるからです。既定の10だと、テーマより先に走ってしまって効きません。

2. 区切り記号は決め打ちにしていません。

THE THORの区切り記号はカスタマイザーで変更できます。fit_title_separator() から取得しておけば、設定を変えても壊れません。

3. 末尾が一致したときだけ切っています。

str_replace で消してしまうと、記事タイトルの中にたまたまサイト名が入っていたときに、そこまで消えてしまいます。末尾だけを見て、一致したぶんだけ切り落とすのが安全です。

スポンサーリンク

記事ページ以外は、そのままにしておきます。

このコードは is_singular( 'post' ) で記事ページに限定しています。

トップページ、カテゴリーページ、固定ページには手を付けません。

これらのページは、タイトルが「カテゴリー名」だけになってしまうと、何のサイトか分からなくなります。サイト名が付いていたほうが自然です。

外すのは記事ページだけで十分です。

子テーマのファイルを分けておくと管理が楽です。

functions.php に直接書いてもいいのですが、機能が増えてくると見通しが悪くなります。

ファイルを分けて、読み込むだけにしておくと整理しやすいです。

the-thor-child/
├── functions.php
└── inc/
    └── seo-title.php

functions.php には、読み込む1行だけを書きます。

<?php
/** 記事ページのタイトルからサイト名を外す */
require_once get_stylesheet_directory() . '/inc/seo-title.php';

子テーマなので get_template_directory() ではなく、get_stylesheet_directory() を使います。ここを間違えると親テーマのフォルダを見に行ってしまい、ファイルが見つかりません。

もうひとつ、functions.php の末尾に ?> は書かないでください。そのあとに空行や空白が入ると、ページの先頭に余計な出力が混ざって、ヘッダーの処理が失敗することがあります。

ファイルの設置はFTPでもできますが、SSHが使えるならWP-CLIと併せて使うと、確認まで一気に進められて楽です。

反映されたか確認します。

記事ページを開いて、ソースの <title> を見ます。

ここで気をつけたいのがキャッシュです。

サーバー側のページキャッシュが効いていると、古いタイトルが返ってきます。直っていないように見えて、実はキャッシュだった、ということがあります。

URLの後ろに意味のないパラメータを付けると、キャッシュを避けて確認できます。

https://example.com/article/?cb=1

これで正しいタイトルが出ていれば、コードは効いています。あとはキャッシュを消せば完了です。

検索結果に出るまでは時間がかかります。

タイトルを変えても、検索結果はすぐには変わりません。

Googleが再びページを読みに来るまで待つ必要があります。

急ぐなら、Search Consoleの「URL検査」からインデックス登録をリクエストしてください。数日から数週間で反映されます。

なお、Googleはタイトルを書き換えることがあります。サイト名を外しても、Google側が判断して付け直す場合があります。そこは制御できないものとして割り切ってください。

まとめ

THE THORで記事タイトルからサイト名を外すなら、子テーマで pre_get_document_title を使うのが確実です。

  1. 優先度は20にする。
  2. 区切り記号は fit_title_separator() から取る。
  3. 末尾が一致したときだけ切り落とす。
  4. 記事ページ以外はそのままにする。

タイトルの文字数は、そのままクリック率に効いてきます。

サイト名で10文字使っているなら、そのぶんを記事の内容の説明に回したほうが読まれます。

スポンサーリンク
スポンサーリンク