WordPressでECサイトやオウンドメディアを長く運用していると、テーマの更新やSEOプラグインの導入・入れ替えのタイミングで、検索結果のタイトル表示が急に崩れるというトラブルに遭遇することがあります。原因を調べてみると、テーマのheader.phpに古い書き方のwp_title()が残っていて、SEOプラグインが出力する<title>タグと衝突していた、というケースは珍しくありません。表面的には気づきにくく、しかし検索順位やクリック率にじわじわと悪影響を及ぼす、典型的な「保守負債」の一つです。
wp_title()は、WordPressの黎明期から使われてきた、ページタイトルを出力するためのテンプレートタグです。現在では後継の仕組みが標準搭載されているため、新規実装で使う機会はほとんどありませんが、長年運用されているテーマや、他社から引き継いだWordPressサイトには今なお現役で残っていることが多い関数です。特に、複数のスタッフや制作会社の手が入ってきた小売ECのコーポレートサイトやオウンドメディアでは、この関数が「知らないうちに残っていた」ことが原因で、titleタグが二重出力されたり、想定と違う文言が検索結果に表示されたりする事故が起こり得ます。
本記事では、wp_title()の正確な仕様と現在の位置づけを整理したうえで、SEOプラグインとの併用時に起きやすい競合トラブルの構造、そしてそれを未然に防ぐための保守運用の考え方を、小売ECのインバウンド集客という観点から解説します。単なる関数リファレンスではなく、「なぜ事故が起きるのか」「どう検知し、どう防ぐか」という実務目線でまとめていますので、既存サイトの保守を担当されている方、他社からサイトを引き継いだばかりの方は特に参考にしていただけるはずです。
この記事で分かること
- wp_title()の構文・引数・戻り値と、現在のWordPressにおける位置づけ
- SEOプラグイン(Yoast SEO、RankMathなど)とwp_title()が競合してtitleタグが二重出力される仕組み
- 小売ECサイトで二重出力が起きたときに実際に発生するSEO・CTR上の悪影響
- 既存サイトの保守運用でwp_title()の残存リスクを洗い出し、安全に置き換える手順
- 制作会社やCMS移行の引き継ぎ時にチェックすべきポイント
wp_titleの競合事故が小売ECの集客で重要になる理由
検索結果に表示されるタイトルは、ユーザーが最初に目にする「その記事・そのページの顔」です。どれだけ内部のコンテンツが優れていても、検索結果のタイトルが意図と違う表示になっていれば、クリックされる前の段階で機会損失が発生します。特に小売ECにおいては、タイトルに含まれる商品名・カテゴリ名・訴求ワードが検索クエリとの一致度を左右するため、タイトルの事故は集客導線の入り口そのものを壊すリスクになります。
- titleタグが二重出力されると、検索エンジンがどちらを正としてインデックスするか予測できず、意図しないタイトルがSERPに表示される可能性がある
- ブラウザのタブ表示やSNSシェア時のタイトルが崩れ、ブランドの見え方が不統一になる
- SEOプラグインで丁寧に設定したタイトル・ディスクリプションが、テンプレート側の出力によって上書き・重複され、設定した工数が無駄になる
- クロールバジェットの限られたサイトでは、重複・不整合なメタ情報がクローラーの評価を下げる要因になり得る
- 複数人・複数会社が関わる運用体制では、誰も気づかないまま長期間放置されやすく、発見が遅れるほど機会損失が積み上がる
特に見落とされがちなのが、「サイトは正常に表示されているように見えるのに、ソースコードの<head>内だけで事故が起きている」というパターンです。ブラウザの見た目上は最初のtitleタグしか反映されないため、運用担当者が管理画面やフロント表示を目視確認しただけでは異常に気づけません。ソースコードを開いて<title>タグの数を数える、あるいはSEOプラグインの診断機能や外部の検索順位チェックツールで初めて発覚する、というのが典型的な発見経路です。小売ECのように継続的に新商品ページや特集ページを追加していくサイトでは、こうした「見えない事故」が新しいテンプレートやページタイプが追加されるたびに再発するリスクもあり、一度の対処で終わらせず、恒常的にチェックする仕組みが必要になります。
関数の役割を実務目線で理解する
wp_title( $sep, $display, $seplocation )は、リクエストされたページの種別(投稿・固定ページ・アーカイブ・検索結果など)に応じて、そのページにふさわしいタイトル文字列を生成し、区切り文字とともに出力する、テンプレートタグです。第1引数の$sepは区切り文字(デフォルトは»)、第2引数の$displayは出力するかどうかの真偽値(デフォルトtrue、falseにすると文字列として返す)、第3引数の$seplocationは区切り文字を左右どちらに置くかを指定します。
<title><?php wp_title( '|', true, 'right' ); ?><?php bloginfo( 'name' ); ?></title>
これは、古いテーマのheader.phpで典型的に見られる書き方です。ページタイトルの後ろに区切り文字「|」を置き、続けてサイト名を出力することで、「商品ページ名 | サイト名」のようなtitleタグを組み立てています。WordPress 4.1以降は、テーマ側でadd_theme_support( 'title-tag' )を宣言することで、wp_head()が自動的に最適化された<title>タグを出力してくれる仕組みが標準になりました。この仕組みの内部ではwp_get_document_title()やdocument_title_partsフィルターが使われており、開発者がheader.phpに直接タイトルタグを書く必要はなくなっています。
// functions.php
add_theme_support( 'title-tag' );
// header.php側では<title>タグを一切書かず、wp_head()に任せる
// <head>
// <?php wp_head(); ?>
// </head>
ここで注意すべきアンチパターンは、「add_theme_support( 'title-tag' )を宣言済みのテーマなのに、header.phpにも古いwp_title()を使った<title>タグが残っている」状態です。この場合、wp_head()が自動生成する<title>タグと、テンプレートに直書きされた<title>タグの両方が出力され、<head>内に<title>タグが2つ並ぶという事故が発生します。さらにここへYoast SEOやRankMathなどのSEOプラグインが加わると、プラグインが独自に生成するタイトルとも競合し、「どのタイトルが実際に検索結果へ反映されるか予測できない」という不安定な状態になります。ブラウザは基本的に最初に出現した<title>タグを採用しますが、検索エンジン側の解釈はクローラーやアルゴリズムの挙動に依存するため、想定外のタイトルがインデックスされるリスクは常に残ります。もう一つの見落としがちな注意点は、wp_title()自体はページの種別に応じたタイトルしか生成せず、SEOプラグインのように「タイトルテンプレート(%%title%% %%sep%% %%sitename%%のような変数展開)」を柔軟にカスタマイズする機能を持たない点です。そのため、古いテーマのタイトル設計とSEOプラグインの設定内容が思想レベルでズレやすく、運用担当者が違和感に気づきにくいという構造的な問題もあります。
小売事業者のインバウンド集客に落とし込む考え方
既存サイトのheader.php・テーマファイルを棚卸しする
まず最初に行うべきは、現在稼働しているテーマのheader.phpや、タイトル出力に関わるテンプレートファイルを確認し、wp_title()が直接呼び出されている箇所がないかを洗い出すことです。特に他社から引き継いだサイトや、長年複数人で更新してきたサイトでは、制作当初のテーマ構造がそのまま残っており、担当者の誰も全体像を把握していないケースが少なくありません。
棚卸しの際は、テーマのfunctions.phpでadd_theme_support( 'title-tag' )が宣言されているかどうかも合わせて確認します。この宣言があるにもかかわらずheader.phpにも<title>タグが直書きされている場合は、二重出力がほぼ確定的に発生している状態です。逆に宣言がなく、header.phpのwp_title()だけでタイトルを出力している場合は、SEOプラグイン側がその出力にどう介入しているかを個別に確認する必要があります。
- 使用中の子テーマ・親テーマのheader.phpに`wp_title`の呼び出しがないかgrep等で検索する
- functions.phpで`add_theme_support( ‘title-tag’ )`の有無を確認する
- 実際のページのソースコードを開き、<title>タグが1つだけかを目視確認する
SEOプラグインのタイトル出力設定と競合有無を確認する
Yoast SEOやRankMathといった主要SEOプラグインは、基本的にテーマがtitle-tagサポートを宣言していることを前提に、document_title_partsなどのフィルターを通じて自社のタイトル生成ロジックを差し込む設計になっています。つまり、テーマ側が正しくtitle-tagサポートを宣言し、header.phpに独自の<title>タグを書いていなければ、SEOプラグインの設定がそのまま検索結果に反映される、という健全な状態になります。
問題は、この前提が崩れているサイトです。テーマが独自に<title>タグを出力し続けている場合、SEOプラグインの管理画面でどれだけ丁寧にタイトルテンプレートを設定しても、実際のソースコードには反映されない、あるいは意図しない形で重複するという事態が起こります。運用担当者が「プラグインの設定を変えたのに反映されない」と感じたときは、まずこの競合を疑うべきです。
- プラグインの診断機能(Yoastのサイト診断など)でタイトル関連の警告が出ていないか確認する
- 実ページのソースコードとプラグイン管理画面の設定値を突き合わせ、反映されているかを確認する
- プラグインを切り替えた・アップデートした直後は特に重点的にチェックする
置き換えの優先順位と影響範囲を見極める
棚卸しと競合確認が終わったら、実際の修正に移りますが、いきなりheader.phpを書き換える前に、影響範囲を見極めることが重要です。小売ECサイトは商品詳細・カテゴリ一覧・特集ページ・ブログ記事など、テンプレートの種類が多く、修正が一箇所で完結しないことがあります。特にカスタムテンプレートやカスタム投稿タイプ専用のテンプレートファイルに、それぞれ個別のwp_title()呼び出しが埋め込まれているケースもあるため、一箇所を直して満足せず、テンプレート単位で網羅的にチェックする必要があります。
また、修正の優先順位は「集客への影響が大きいページから」が基本です。商品詳細ページやカテゴリページのように検索流入が多いページ群を最優先で確認し、その後に固定ページや管理系のテンプレートへと範囲を広げていくと、限られた工数の中でも効果的にリスクを減らせます。
- 検索流入の多いテンプレート(商品詳細・カテゴリ一覧・特集LP)から優先的に確認する
- カスタム投稿タイプ専用テンプレートの個別チェックを忘れない
- 修正はステージング環境で検証してから本番へ反映する
title-tagサポートへの統一と検証フローの整備
最終的な着地点としては、add_theme_support( 'title-tag' )を宣言し、header.phpから<title>タグの直書きを完全に排除して、タイトル出力をSEOプラグイン(またはWordPressコアの標準機能)に一本化することが望ましい状態です。これにより、タイトルの管理主体が一元化され、今後のテンプレート追加時にも同じ事故が再発するリスクを構造的に減らせます。
ただし、テーマの改修は他の表示崩れを引き起こすリスクもゼロではないため、修正後は必ずステージング環境や検証用URLで、全テンプレート種別のソースコードを目視確認するフローを組み込んでください。可能であれば、この確認作業をチェックリスト化し、今後のテーマ更新やプラグイン入れ替え時にも毎回実施する運用ルールとして定着させることが、再発防止の観点で有効です。
- title-tagサポートへの統一を最終ゴールとして設定する
- 修正後は主要テンプレート種別ごとにソースコードを目視確認する
- チェックリスト化し、テーマ更新・プラグイン変更のたびに実施する運用ルールにする
運用イメージ(架空パターン)
例えば、複数のアパレル小売店舗を展開するEC事業者が、数年前に制作会社へ依頼して構築したWordPressサイトを、社内担当者に引き継いで自社運用に切り替えたと仮定します。引き継ぎ当初は特に問題なく運用できていたものの、あるとき検索順位を改善する目的でSEOプラグインを新規導入したところ、一部の商品カテゴリページで検索結果のタイトル表示が意図と異なる文言になっていることに気づいた、という仮想のシナリオを考えてみます。
担当者がソースコードを確認したところ、制作当初のテーマのheader.phpにwp_title()を使った<title>タグが直書きされたまま残っており、そこへ新しく導入したSEOプラグインの出力が加わることで、<head>内に<title>タグが二重に出力されていたことが判明した、という想定です。この場合、まず影響範囲を洗い出すために全テンプレート種別のソースコードを確認し、title-tagサポートの宣言状況とheader.phpの記述を突き合わせ、修正の優先順位を検索流入の多いカテゴリページ・商品詳細ページから順に決めていく、という進め方が現実的でしょう。
あくまで一般的に起こりうるパターンとしての仮想例ですが、このように「制作当初の実装」と「後から追加した施策」の間に生じるズレは、小売ECのように長期間・複数人で運用されるサイトで繰り返し発生しやすい構造的な問題です。特定の統計や実績数値を示すものではなく、点検すべき観点を整理するための例として捉えてください。
実装・運用の進め方
- 現在使用中のテーマ・子テーマのheader.php、および関連テンプレートファイルを全て洗い出す
- functions.phpのtitle-tagサポート宣言の有無を確認する
- SEOプラグインの管理画面設定と、実ページのソースコード出力を突き合わせて整合性を確認する
- 修正はステージング環境で行い、主要テンプレート種別ごとに目視でソースコードを確認する
- 本番反映後も、Search Consoleのインデックスカバレッジやカスタムクロールツールで表示タイトルの実態を継続的に確認する
- 修正内容と確認手順をドキュメント化し、次回のテーマ更新・プラグイン変更時に再利用できる状態にしておく
よくある失敗と回避策
- 失敗:header.phpの<title>タグだけを削除し、title-tagサポートの宣言を忘れて<title>タグ自体が出力されなくなる → 回避策:削除と宣言追加は必ずセットで行い、修正直後にソースコードを確認する
- 失敗:一部テンプレートだけ修正し、カスタム投稿タイプ専用テンプレートの修正漏れに気づかない → 回避策:テンプレート種別ごとにチェックリストを作り、網羅的に確認する
- 失敗:本番環境でいきなり修正し、表示崩れに気づかないまま公開してしまう → 回避策:必ずステージング環境で事前検証を行う
- 失敗:修正後の確認をブラウザの見た目だけで済ませ、ソースコードのtitleタグ重複を見逃す → 回避策:view-sourceで<head>内を直接確認する習慣をつける
- 失敗:SEOプラグインを入れ替えた際に再度同じ競合が発生し、初動が遅れる → 回避策:プラグイン変更時のチェック項目として恒常的にタイトル出力確認を組み込む
社内で持つべき判断軸
- タイトル出力の管理主体を「テーマ」と「SEOプラグイン」のどちらか一方に一元化できているか
- テーマ更新・プラグイン変更のたびに、タイトル出力の整合性を確認するフローが運用に組み込まれているか
- サイトを引き継いだ際、既存テーマの実装内容を把握せず放置していないか
- 検索順位やCTRの異常を検知した際、テンプレート起因の事故を疑う視点を持てているか
- 修正履歴やチェック結果をドキュメントとして残し、属人化を防げているか
成果測定で見るべき指標
- Google Search Consoleでの検索結果表示タイトルと、意図したタイトルの一致率
- 主要テンプレート種別ごとの検索流入数・クリック率(CTR)の推移
- インデックスカバレッジレポートにおける重複コンテンツ・タイトル関連の警告件数
- SEOプラグインの診断機能が示すタイトル関連のアラート件数
- 修正実施前後でのオーガニック検索流入の変化
よくある質問
wp_title()は現在のWordPressでも使えますか?
関数自体は非推奨として削除されているわけではなく、呼び出せば動作します。ただし、WordPress 4.1以降はtitle-tagサポートによる標準的なタイトル出力機能が用意されているため、新規実装でwp_title()を直接使う必要性は基本的にありません。既存サイトで残っている場合は、置き換えを検討する対象と考えるのが安全です。
SEOプラグインを入れているのに、なぜタイトルが反映されないことがあるのですか?
テーマのheader.phpに古い<title>タグの直書きが残っていると、SEOプラグインの設定が反映されているように見えても、実際のソースコードには反映されていない、あるいは重複出力されている可能性があります。プラグインの設定を疑う前に、まずソースコードのtitleタグの数と内容を確認することをおすすめします。
titleタグが二重出力されていても、パッと見はサイトが正常に見えるのはなぜですか?
ブラウザは基本的に最初に出現したtitleタグをタブ表示等に採用するため、見た目上は問題ないように見えます。しかし検索エンジン側の解釈は必ずしも同じとは限らず、意図しないタイトルがインデックスされるリスクが残るため、ソースコードレベルでの確認が必要です。
修正時にサイト全体のタイトルが一時的に消えてしまうリスクはありますか?
header.phpの<title>タグを削除する際、title-tagサポートの宣言を忘れると、その間タイトルが出力されない状態になり得ます。削除とサポート宣言の追加は必ずセットで行い、修正直後に必ずソースコードを確認する運用にすることでこのリスクは回避できます。
制作会社に依頼せず、自社の担当者だけで対応することは可能ですか?
テーマファイルの読み書きができる担当者であれば、棚卸しから置き換えまで自社で対応することは可能です。ただし、テンプレートの種類が多い小売ECサイトでは影響範囲の見極めが難しく、修正漏れによる二次的なトラブルも起こり得るため、範囲が広い場合や判断に迷う場合は専門家によるレビューを挟むと安全です。
この対応はSEO対策として直接的な順位向上効果がありますか?
二重出力の解消自体は「事故の防止」であり、それ単体で順位が大きく向上するとは限りません。ただし、意図したタイトルが正しく検索エンジンに伝わるようになることは、他のSEO施策の効果を正しく発揮させるための土台となるため、間接的に集客成果を支える重要な要素です。
EC制作・EC広告の相談先を探している小売事業者の方へ
ここまで解説した設計や実装は、単体の関数を知るだけでは十分ではありません。実際の集客成果につなげるには、商品データの持ち方、カテゴリやタグの設計、記事導線、内部リンク、コンバージョン導線、広告配信先の整合まで含めて一貫して設計する必要があります。
自社ECの制作、既存WordPressサイトの改善、Shopifyや基幹システムとの連携、広告運用と連動した特集ページ制作までまとめて整理したい場合は、事業構造に合わせた設計が重要です。運用負荷を抑えながら売上につながる情報設計を進めたい場合は、要件整理の段階から相談できる体制を持っておくと失敗を減らせます。
まとめ
wp_title()は、WordPressの歴史の中で長く使われてきたタイトル出力用のテンプレートタグですが、現在はtitle-tagサポートという標準機能に役割を譲っています。それでもなお、既存サイトのテーマに残り続け、SEOプラグインとの併用時に二重出力という見えにくい事故を引き起こす原因となり得ます。小売ECのように継続的にページを追加し、複数人・複数会社が関わって運用されるサイトほど、このリスクは放置されやすく、発見も遅れがちです。定期的な棚卸しと、テーマ更新・プラグイン変更のたびに確認するフローを運用に組み込むことで、検索結果におけるタイトル表示の事故を未然に防ぎ、集客導線の入り口を守ることができます。

コメント