WordPress どこからテンプレートが読み込まれているのか?
解決済
回答 5
投稿
- 評価
- クリップ 0
- VIEW 2,010
Wordpressを使用しています。オリジナルテンプレートで作成しているのですが、<?php get_sidebar()?>と入力したのですが、デフォルトのオリジナルテンプレートにはsidebar.phpがありません。と、するとこのsidebar.phpはどこから読み込まれているのかが知りたいです。もしかしたら他のテンプレートのsidebar.phpが読み込まれているのではないでしょうか?
ちなみに他のテンプレートを使用しない、デフォルトではsidebar.phpが存在しませんでした。
どこから読み込まれているかご教授お願いします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+6
まず、WordPress には親テーマと子テーマという概念があります。WordPress でテーマの PHP ファイルなどを読み込む時は、子テーマ > 親テーマ > デフォルト(wp-includes/theme-compat/) という順番でファイルを探しに行きます。親テーマは子テーマの元になっているテーマを指します。子テーマについては、以下のリンクをご覧ください。
https://wpdocs.osdn.jp/%E5%AD%90%E3%83%86%E3%83%BC%E3%83%9E
ファイルの読み込みの仕組みですが、get_sidebar() 関数、get_header() 関数、get_footer() 関数の内部では、locate_template() 関数が呼ばれています。以下に示すのは、get_sidebar() 関数のコアソースです。
/**
* Load sidebar template.
*
* Includes the sidebar template for a theme or if a name is specified then a
* specialised sidebar will be included.
*
* For the parameter, if the file is called "sidebar-special.php" then specify
* "special".
*
* @since 1.5.0
*
* @param string $name The name of the specialised sidebar.
*/
function get_sidebar( $name = null ) {
/**
* Fires before the sidebar template file is loaded.
*
* The hook allows a specific sidebar template file to be used in place of the
* default sidebar template file. If your file is called sidebar-new.php,
* you would specify the filename in the hook as get_sidebar( 'new' ).
*
* @since 2.2.0
* @since 2.8.0 $name parameter added.
*
* @param string|null $name Name of the specific sidebar file to use. null for the default sidebar.
*/
do_action( 'get_sidebar', $name );
$templates = array();
$name = (string) $name;
if ( '' !== $name )
$templates[] = "sidebar-{$name}.php";
$templates[] = 'sidebar.php';
locate_template( $templates, true );
}
最後にlocate_template( $templates, true );
という記述がありますが、この部分がファイルを読み込んでいる部分です。locate_template() 関数が何をしているのかというと、単純に PHP の関数である file_exists() 関数でファイルが有るか無いかをチェックして、有れば PHP の関数である require_once() 関数でファイルを読み込んでいるだけです。
改変は厳禁ですが、WordPress の関数がどのような動きをしているのか気になったら、WordPress のコアファイルを覗いてみると色々発見があり面白いと思いますよ。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+2
【関数リファレンス/get sidebar - WordPress Codex 日本語版】
https://wpdocs.osdn.jp/関数リファレンス/get_sidebar
現在のテーマディレクトリの sidebar.php テンプレートファイルを読み込みます。
名前 ($name) を指定すると、対応するサイドバー sidebar-{name}.php を読み込みます。sidebar-{name}.php が存在しない場合は、かわりに sidebar.php を読み込みます。
sidebar.php ファイルがテーマに含まれていない場合は、デフォルトテーマの wp-includes/theme-compat/sidebar.php からサイドバーを読み込みます。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
詳しい仕組みはわかりませんが、
wordpress/wp-includes/theme-compat/
基本的なものは、このtheme-compatのフォルダに入っているテンプレートが使われるみたいです。
(最初のwordpressのフォルダは人によって違うかもしれません)
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
デバッグ環境を整えて、ステップ実行すると面白いです。
コアファイルをどのように通ってくるのか、一度見てみるとイイです。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
みなさんありがとうございます。解決のご報告が遅れてしまいましたが、一応自己解決。
wordpress/wp-includes/theme-compat/
ちなみにフロントページがどこなのかは未だに解ってませんが、その内トレースしたいと思います。
Sidebar.phpが結局のところここにウィジットを表示させるコードを書かないと動かないと判明したので、のんびりコードを追加していきたいと思います。
ありがとうございました。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.09%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/02/11 10:12
この投稿は削除されました