K4750.NET

WordPressのテンプレートファイルのロード順および呼び出し階層

WordPressのテンプレートファイルのロード順および呼び出し階層を調査する。


1.使用しているテーマについて

テーマにはyokoを親テーマとした独自の子テーマk4750を使用している。


2.ロード順

WordPressのindex.phpget_included_files()を仕込んで調査した。

index.php
wp-blog-header.php
wp-load.php
wp-config.php
wp-settings.php
wp-includes/load.php
wp-includes/default-constants.php
wp-includes/version.php
wp-includes/compat.php
wp-includes/functions.php
wp-includes/option.php
wp-includes/class-wp.php
wp-includes/class-wp-error.php
wp-includes/plugin.php
wp-includes/pomo/mo.php
wp-includes/pomo/translations.php
wp-includes/pomo/entry.php
wp-includes/pomo/streams.php
wp-includes/wp-db.php
wp-includes/cache.php
wp-includes/default-filters.php
wp-includes/l10n.php
wp-includes/class-wp-walker.php
wp-includes/class-wp-ajax-response.php
wp-includes/formatting.php
wp-includes/capabilities.php
wp-includes/query.php
wp-includes/theme.php
wp-includes/class-wp-theme.php
wp-includes/template.php
wp-includes/user.php
wp-includes/meta.php
wp-includes/general-template.php
wp-includes/link-template.php
wp-includes/author-template.php
wp-includes/post.php
wp-includes/post-template.php
wp-includes/revision.php
wp-includes/post-formats.php
wp-includes/post-thumbnail-template.php
wp-includes/category.php
wp-includes/category-template.php
wp-includes/comment.php
wp-includes/comment-template.php
wp-includes/rewrite.php
wp-includes/feed.php
wp-includes/bookmark.php
wp-includes/bookmark-template.php
wp-includes/kses.php
wp-includes/cron.php
wp-includes/deprecated.php
wp-includes/script-loader.php
wp-includes/class.wp-dependencies.php
wp-includes/class.wp-scripts.php
wp-includes/functions.wp-scripts.php
wp-includes/class.wp-styles.php
wp-includes/functions.wp-styles.php
wp-includes/taxonomy.php
wp-includes/update.php
wp-includes/canonical.php
wp-includes/shortcodes.php
wp-includes/class-wp-embed.php
wp-includes/media.php
wp-includes/http.php
wp-includes/class-http.php
wp-includes/widgets.php
wp-includes/nav-menu.php
wp-includes/nav-menu-template.php
wp-includes/admin-bar.php
wp-includes/vars.php
wp-content/plugins/auto-post-thumbnail/auto-post-thumbnail.php
wp-content/plugins/responsive-add-ons/responsive-add-ons.php
wp-includes/pluggable.php
wp-includes/pluggable-deprecated.php
wp-includes/default-widgets.php
wp-includes/locale.php
wp-content/themes/k4750/functions.php
wp-content/themes/yoko/functions.php
wp-content/themes/yoko/includes/theme-options.php
wp-includes/template-loader.php
wp-includes/class-wp-admin-bar.php
wp-content/themes/yoko/index.php
wp-content/themes/yoko/header.php
wp-content/themes/yoko/content.php
wp-content/themes/yoko/sidebar.php
wp-content/themes/yoko/footer.php

3.呼び出し階層

PHPの拡張「inclued(Inclusion hierarchy viewer)」を使って調査した。index.phpを頂点に、「行番号: ファイル名(オペレーション名)」を記載している。

index.php
17: wp-blog-header.php (require)
  12: wp-load.php (require_once)
    29: wp-config.php (require_once)
      93: wp-settings.php (require_once)
        21: wp-includes/load.php (require)
          327: wp-includes/wp-db.php (require_once)
          390: wp-includes/cache.php (require_once)
        22: wp-includes/default-constants.php (require)
        23: wp-includes/version.php (require)
        64: wp-includes/compat.php (require)
        65: wp-includes/functions.php (require)
          8: wp-includes/option.php (require)
          2706: wp-includes/default-widgets.php (require_once)
        66: wp-includes/class-wp.php (require)
        67: wp-includes/class-wp-error.php (require)
        68: wp-includes/plugin.php (require)
        69: wp-includes/pomo/mo.php (require)
          10: wp-includes/pomo/translations.php (require_once)
            10: wp-includes/pomo/entry.php (require_once)
          11: wp-includes/pomo/streams.php (require_once)
        82: wp-includes/default-filters.php (require)
        99: wp-includes/l10n.php (require_once)
        105: wp-includes/class-wp-walker.php (require)
        106: wp-includes/class-wp-ajax-response.php (require)
        107: wp-includes/formatting.php (require)
        108: wp-includes/capabilities.php (require)
        109: wp-includes/query.php (require)
        110: wp-includes/theme.php (require)
        111: wp-includes/class-wp-theme.php (require)
        112: wp-includes/template.php (require)
          407: wp-content/themes/yoko/header.php (require_once)
          409: wp-content/themes/yoko/content.php (require)
          409: wp-content/themes/yoko/content.php (require)
          407: wp-content/themes/yoko/sidebar.php (require_once)
          407: wp-content/themes/yoko/footer.php (require_once)
        113: wp-includes/user.php (require)
        114: wp-includes/meta.php (require)
        115: wp-includes/general-template.php (require)
        116: wp-includes/link-template.php (require)
        117: wp-includes/author-template.php (require)
        118: wp-includes/post.php (require)
        119: wp-includes/post-template.php (require)
        120: wp-includes/revision.php (require)
        121: wp-includes/post-formats.php (require)
        122: wp-includes/post-thumbnail-template.php (require)
        123: wp-includes/category.php (require)
        124: wp-includes/category-template.php (require)
        125: wp-includes/comment.php (require)
        126: wp-includes/comment-template.php (require)
        127: wp-includes/rewrite.php (require)
        128: wp-includes/feed.php (require)
        129: wp-includes/bookmark.php (require)
        130: wp-includes/bookmark-template.php (require)
        131: wp-includes/kses.php (require)
        132: wp-includes/cron.php (require)
        133: wp-includes/deprecated.php (require)
        134: wp-includes/script-loader.php (require)
          25: wp-includes/class.wp-dependencies.php (require)
          28: wp-includes/class.wp-scripts.php (require)
          31: wp-includes/functions.wp-scripts.php (require)
          34: wp-includes/class.wp-styles.php (require)
          37: wp-includes/functions.wp-styles.php (require)
        135: wp-includes/taxonomy.php (require)
        136: wp-includes/update.php (require)
        137: wp-includes/canonical.php (require)
        138: wp-includes/shortcodes.php (require)
        139: wp-includes/class-wp-embed.php (require)
        140: wp-includes/media.php (require)
        141: wp-includes/http.php (require)
        142: wp-includes/class-http.php (require)
        143: wp-includes/widgets.php (require)
        144: wp-includes/nav-menu.php (require)
        145: wp-includes/nav-menu-template.php (require)
        146: wp-includes/admin-bar.php (require)
          25: wp-includes/class-wp-admin-bar.php (require)
        185: wp-includes/vars.php (require)
        197: wp-content/plugins/auto-post-thumbnail/auto-post-thumbnail.php (include_once)
        197: wp-content/plugins/responsive-add-ons/responsive-add-ons.php (include_once)
        201: wp-includes/pluggable.php (require)
        202: wp-includes/pluggable-deprecated.php (require)
        279: wp-includes/locale.php (require_once)
        291: wp-content/themes/k4750/functions.php (include)
        293: wp-content/themes/yoko/functions.php (include)
          34: wp-content/themes/yoko/includes/theme-options.php (require_once)
  16: wp-includes/template-loader.php (require_once)
    47: wp-content/themes/yoko/index.php (include)

4.調査を行った背景

親テーマyokoのヘッダー画像(1102×350)を別のサイズの画像(1000×288)に変更しようとして調査したところ、画像サイズの正しいカスタマイズ方法は「子テーマk4750のfunctions.phpよるフィルターの定義にて行う」ように見えたが、functions.phpが誰によってどのタイミングでincludeされるのか知りたかったので(ドキュメントやソースコードだけでは不安だったのもあり)実際の動作から確認を行った。