[get_included_files] ページで読み込まれたPHPファイル名を表示する

0
633
views

WordPress で1ページを表示させるのも、複数の PHP ファイルを組み合わせることで実現しています。実際にページごとで読み込まれている複数の PHP ファイルの名前を画面に表示してみます。

簡易的なデバッグ

footer.php など、デバッグを表示させたい場所に以下のコードを挿入します。

($inc_val) {
        if ( stristr($inc_val, 'themes') ) {
            $current_dir = get_template_directory().'/';
            $file_slug = str_replace($current_dir, '', $inc_val);
            array_push($inc_file_array, $file_slug);
        }
    }
    echo  '[include ファイル]', '
    '; foreach ($inc_file_array as $inc_file_slug) { echo '
  • ', $inc_file_slug, '
  • '; } echo '
'; ?>

ポイントは、get_included_files 関数を使っている点です。

get_included_files 関数

get_included_files() は include または require で読み込まれたファイルの名前を配列として返す関数です。上記のコードでは、この関数で取得したファイル名を整形して順番に表示しています。

デバッグ部品を組み合わせる

同じようなデバッグ目的で、ページに適用されているテンプレートファイルの名前を表示する記事を以前に書きました。

[$template] ページに適用されているテンプレートファイルを知る方法

この方法を組み合わせて、デバッグプリントをまとめて部品化してみます。

ファイル名デバッグ部品化の手順

適用されているテンプレートファイル名、読み込まれているファイル名をデバッグするファイルの部品化の手順は、以下の通りです。

  1. 外部ファイルを新規作成
  2. 部品をインクルード
  3. 関数の呼び出し
  4. デバッグ表示をチェック

1. 外部ファイルを新規作成

テーマディレクトリに新たに inc ディレクトリを作ります。さらにその中に以下の記述で show-applied-filenames.php を作ります。

';
}
function show_included_filenames() {
    $inc_file_list = get_included_files();
    $inc_file_array = array();
    foreach ($inc_file_list as $inc_key => $inc_val) {
        if ( stristr($inc_val, 'themes') ) {
            $current_dir = get_template_directory().'/';
            $file_slug = str_replace($current_dir, '', $inc_val);
            array_push($inc_file_array, $file_slug);
        }
    }
    echo  '[include ファイル]',
            '
    '; foreach ($inc_file_array as $inc_file_slug) { echo '
  • ', $inc_file_slug, '
  • '; } echo '
'; } ?>

今回のファイル名の表示スタイルは、コードが読みやすくなるようにあまり手を加えていません。実際には、状況に合わせて適宜スタイルを調整します。

2. 部品をインクルード

functions.php 内で、部品化したファイル inc/show-applied-filenames.php をインクルードします。

ページに適用されているテンプレートファイルを知る方法と同じように、デバッグを一般閲覧者に見せない対策として、2つの条件文で処理をくるみます。

if ( defined('WP_DEBUG') && WP_DEBUG ) {
    if ( is_user_logged_in() ) {
        require get_template_directory() . '/inc/show-applied-filenames.php';
    }
}

3. 関数の呼び出し

footer.php などのデバッグ表示させたい箇所で、2つの自作関数を呼び出します。ここの処理も条件文でくるみます。

4. デバッグ表示をチェック

あとは、きちんとデバック表示が行われるかをブラウザで確認して、一連の手順は完了します。

今回は :before擬似要素、content プロパティ、display:inline-block などの CSS を使って見た目を簡略的に整えています。