›WordPressWordPressのページが表示されるまでの流れと仕組みWordPressの内部処理は意外と単純です。本記事ではWordPress製のサイトやブログにサクセスした際に、どのような流れでページが表示されるのかについて説明していきます。WordPressの表示に関わる仕組みや、テーマ・テンプレート周りの表示の仕組みについても簡単に解説します。WordPressのサイト表示には、主に以下の3つの主要なファイルが用いられています。細かな動作については次項で順を追って説明していきます。ここでページが表示される/htdocsの部分は環境によって/var/www/htmlであったり、C:\xampp\htdocsであったりしますが、本記事では簡略化のために/htdocsに統一して解説します。本記事ではWordPressがドキュメントルート直下に設置されているものとして解説していきます。パーマリンク設定は/?p=投稿ID形式ではなく、より現実的な/ユーザ指定/の形式として設定されたものとして解説します。/?p=投稿ID形式を指定している場合は第1項〜第2項を読み飛ばしても構いません。本記事に記載されているソースコードは完全な転載ではなく重要な部分のみを抜粋しています。目次ページアクセス時.htaccess(パスのリダイレクトを行う)index.php(最初に読み込まれる)wp-blog-header.php(設定の読み込み、URLの解析)template-loader.php(テンプレートの読み込み)single.php(投稿ページ用のテーマ・テンプレート)ページアクセス時まずWordPressのページにアクセスした際には、ページの種類に関わらず一貫してドキュメントルート(通常はhtdocsディレクトリ)直下のindex.phpファイルが呼び出されます。固定ページであろうとカテゴリーページであろうと、内部転送により常にindex.phpへと暗黙的にリダイレクトされます。環境の場合/Applications/MAMP/htdocs/index.phpWordPressをサブディレクトリに設置している場合は/htdocs/{サブディレクトリ名}/index.phpが実行される。この転送はWebサーバのRewrite機能によるものであり、その設定は同ディレクトリに自動生成された.htaccessファイル内に記述されています。上記以外のリクエストを全てindex.phpへ転送するパーマリンク設定を標準の/?p=投稿ID形式に指定している場合は、リダイレクトの必要はないため.htaccessは生成されません。ページへのアクセス(http://marycore.jp/?p=9)は暗黙的にhttp://marycore.jp/index.php?p=9と解釈されるためです。index.phpここでは単に同一ディレクトリ内のwp-blog-header.phpファイルを読み込むだけの処理が働きます。"/htdocs"wp-blog-header.phpwp-blog-header.phpでは設定の読み込みとURL解析/クエリ変換、テンプレートの読み込みが行われます。"wp-includes"wp-load.phpでは設定の読み込みが行われており、内部では主にwp-config.phpとwp-settings.phpが読み込まれています。wp-config.phpではデータベースのホスト名やユーザ名、パスワードなどが設定されています。wp-settings.phpではWordPress関連の関数やクラスの読み込みが行われます。wp()関数ではリクエストされたURLへの解析が行われます。カテゴリーページへのリクエストURL(/category/wordpress/)をより厳格なクエリ(/index.php?category_name=wordpress)に変換するといった作業が行われます。クエリの結果を元に、投稿ページやカテゴリーページの判定が行われます。それによってis_single()やis_category()などといったページ判定関数の利用が可能となります。投稿内容の取得やループもこのタイミングで行えるようになります。後はテンプレートを読み込んでページを表示するだけです。表示はtemplate-loader.phpで行われます。template-loader.phptemplate-loader.phpではテンプレートの表示が行われます。ここでやっとHTMLページの完全な表示が行われることになります。以下のコードの通り、アクセス時のURLに応じてそれぞれ異なるテンプレートが読み込まれます。http://marycore.jp/?cat=9)へのアクセスが行われた場合にはis_category()関数が有効となるため、get_category_template()によるテンプレートファイルの取得が行われることになります。最後に、取得されたテンプレートファイルのパスをinclude文で読み込むことでテンプレートの評価が行われ、HTMLが出力・表示されることになります。テンプレートファイルを読み込み・表示するsingle.phpテンプレートの内容はテーマによって異なります。参考までにmarycoreという架空のテーマの投稿ページ用のテンプレート(single.php)の実装例を示します。固定ページ用のpage.phpもカテゴリーページ用のcategory.phpもほとんど似たようなことをしています。フッターの表示(`<footer></footer></body></html>`など)get_header()はWordPressの標準関数であり、関数の実行によってテーマディレクトリ内のheader.phpが自動的に読み込まれます。header.phpではhtml開始タグやheadタグの表示が行われることが一般的です。get_sidebar()もget_footer()もだいたい似たようなことをしています。