目的の箇所はどのテンプレートをいじれば変更できるの?

ヘッダ画像

WordPressで現在のページ表示に使用しているテンプレートをすべて知る

WordPressでは、投稿タイプに応じてデフォルトの構成テンプレートが適用されます。
ただし、プラグインなどを使用しなくても、トップページ(インデックスページ)・固定ページ・カテゴリ、あるいはカスタム投稿タイプなど、表示の際にテーマ中のデフォルトとは異なったテンプレートを適用することができます。
しかし、テーマ構成が複雑になった場合に該当ページが「どのテンプレートで表示されているか?」分からなくなってしまうケースもあります。

適用しているテーマ名とテンプレート名を取得

まずは表示に使われているテーマ名とテンプレート名を取得してみます。
このような際にWordPressでは適用されているテンプレートの情報を持つ$templateという関数で調べることができます。

<?php
if ( is_user_logged_in() ) {
global $template;
$template_dir = basename ( dirname( $template ) );
$template_name = basename($template, '.php');
echo "テーマ:{$template_dir}<br />テンプレート:{$template_name}";
}
?>
テーマとテンプレート表示の様子

テーマの「Twenty Seventeen」の「single」のテンプレートが適用されている

このglobal $templateををヘッダテンプレートのbody直下あたりに記述すれば、ブラウザの最上部に、あるいはフッタテンプレートのbodyの閉じタグ直前あたりに記述すれば、ブラウザの最下部に適用されているテーマ名とテンプレートが表示されます。

includedしているテンプレートを表示する

WordPressではヘッダ・メイン・サイドバー・フッタなどをパートごとに読み込むわけですが、各テンプレート内においてもget_template_partを使うことにより、さらに別のテンプレートを読み込むことができます。
便利ではあるのですが、インクルードが多すぎると該当の箇所が実際にどのテンプレートで表示されているのか非常に分かりにくくなってしまいます。
つまり、目的のカスタマイズを行うためには構成テンプレート認識する必要があるということです。
WordPressにデフォルトのTwentyシリーズなどもそういう傾向がありまね。

こういった際に役立ちそうな該当ページの表示に使われているテンプレートを確認する方法を紹介します。
このPHPコードを読み込んだ時点でincludedされているテンプレートの一覧を書き出しますので、こちらはフッタテンプレートのwp_footer()以降/body直前に挿入ください。
最下部にincludedされたものを含むすべての使用テンプレートを表示します。

<?php
if ( is_user_logged_in() ) {
$inc_file_list=get_included_files();
foreach($inc_file_list as $ink_key => $ink_val){
if(stristr($ink_val,'themes')){
$ink_temp=mb_strlen($ink_val)-strrpos($ink_val,'.');
$ink_temp=strrpos($ink_val,'/',$ink_temp);
echo substr($ink_val,$ink_temp+1).'<br />'.PHP_EOL;
}
}
}
?>

Twenty Fourteenの構成テンプレート

例としてカスタマイズに人気のTwenty Fourteenの投稿ページ表示に使用されているテンプレート一覧を取得してみました。

  • functions.php
  • custom-header.php
  • template-tags.php
  • customizer.php
  • featured-content.php
  • widgets.php
  • single.php
  • header.php
  • content.php
  • comments.php
  • sidebar-content.php
  • sidebar.php
  • footer.php
  • sidebar-footer.php

いかがでしょうか。
投稿ページの表示に実はこんなにたくさんのテンプレートを使っているのです!
一応、is_user_logged_inでログイン状態時のみテンプレート情報を表示するようにしています。
プラグイン化してもよいかと考えたのですが、大した内容ではないですし、基本的にカスタマイズ時以外では不要なコードかと思いますので、ソースをそのまま公開しています。
制作案件として承っている場合はお客様への納品時の消去をお忘れなく!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

「トップに戻る」ボタンでスマホでのユーザビリティアップ!

ウェブサイト上でコンテンツを下にスクロールさせると「トップに戻る」ボタンが出現して、クリックするとビ […]

メールフォームプロCGIをWordPressに設置

WordPressのフォームについて、定番のContact Form7をはじめ、いろいろとプラグイン […]

マルチサイト構築方法まとめ

WordPressバージョン3.0以降に搭載されたマルチサイト機能の構築方法についてまとめます。 マ […]

ページ内目次を見出しタグから自動生成

Wikiをはじめ、記事の先頭にリストの目次(インデックス)をつけているサイトを目にしたことがあると思 […]