• サイトデザイン工事中です。ご意見をお寄せください
  • 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

クエリ概要

提供:WordPress Codex 日本語版
移動: 案内, 検索

この記事はWordPressがブログページを構築する仕組みとその仕組みを修正する方法について述べる開発者向け概要です。ターゲットとなるのは、クエリやパーマリンク機能を拡張するプラグインの開発者、そしてWordPREssのコアに新機能を付け加えたり、バグを修正するためにWordPressをよりよく知ろうとしている開発者です。

より詳しく知るには、ここで言及されるWordPressのコアPHPファイルや関数を読む必要があります。

それでは、ここでWordPressがいかにして表示すべきページやポストを決定し、それを表示するかをステップごとに説明します:

  1. ユーザーがあなたのページの一部となるURLを入力したり、リンクをクリックしたりすると、WordPressは手始めにいくつかのコアファイル (wp-config.php, wp-settings.php, など)を起動させます。ファイル読み込み順の詳細に興味があるならば、index.phpから始めて、includeやrequireで追加されていくPHPファイルを追うのが良いでしょう。
  2. WordPressはあなたが有効にしているすべてのプラグインを読み込んで初期化します(これはinitアクションと呼ばれています)
  3. WordPressは国際化のために テキスト・ドメイン と、現在有効になっているテーマのfunctions.phpを読み込みます。
  4. WordPressはwp()関数(を参照)を起動します。すると、$wp->main()$wpWPクラスのインスタンス。wp-includes/classes.php参照)が呼び出されます。これによりWordPressに対して以下の命令が発行されます:
    1. WP->parse_request()を使ってURLをパースし、クエリを特定せよ--詳しくは以下を参照
    2. $wp_query->parse_query()を使い($wp_queryWP_Queryクラスのインスタンス。wp-includes/query.php参照)、条件分岐タグで使用されるすべてのis_変数を設定せよ。※この関数は「パース」という名前を持つにも関わらず、この場合、WP_Query->parse_queryが実際にパースを行うことはない。すでにWP->parse_request()で処理されているからである。
    3. 特定したクエリをMySQLのデータベースクエリに変換し、WP_Query->get_posts()関数によって投稿のリストを取得するデータベースクエリを発行せよ。そして、WordPressループ内で使用される$wp_queryオブジェクトの中に保存せよ。
    4. 404エラーを処理せよ
    5. ブログのHTTPヘッダーを送出せよ
    6. WordPressループのための変数を設定せよ
  5. WordPressはテンプレートを読み込み、テンプレート階層に従ってどのテンプレートファイルを使用するかを特定します。そして、そのファイルを実行します(基本的にはあなたのテンプレートファイルに書いてあることをそのまま行います)。場合によっては、フィードファイル(wp-rss2.phpなど)を実行するかもしれません。
  6. 多くの場合、テンプレートやフィードファイルが[[The Loop|WordPresループ]を実行して、投稿やページを表示します。
  7. また、テンプレートやフィードファイルは、WordPressに組み込まれた関数を使って、カテゴリーやアーカイブへのパーマリンクを出力します。

WP->parse_request()についての詳細

すでに述べたように、WP->parse_request() (WPクラスのインスタンス。wp-includes/classes.php参照)はURLをクエリ特定のためにパースします。これが行うことをステップごとに示します:

  1. URLからGET変数の部分を取り除く(URL内の?に続く部分)。それから、ブログのホームURLも取り除く。
  2. $wp_rewrite->wp_rewrite_rules() ($wp_rewriteWP_Rewriteクラスのインスタンス。wp-includes/rewrite.php参照)を呼び出して現在有効になっているリライト・ルールを取得する。リライト・ルールはWordPressパーマリンクのための一連のパターンマッチルールであり、マッチした場合にどうすればよいかを指定する。例えば、デフォルトで抜き出されたパーマリンクがcategory/abcだとすると、カテゴリーabcが要求されているということが特定される。また、ホームページ用のリライトルールもある(ブログURLの後ろに何もない)。
  3. リライトルールはパーマリンクがマッチするまでルールを適用する。何も見つからなければ、404エラーである。マッチすれば、WordPressは適用されたルールに従って情報を抽出する。
  4. 現在有効になっているクエリ変数のリストを取得する。それぞれのクエリ変数に対し、WordPressはそれがパラーマリンクの解析によって得られたのか、それともPOSTやGETからなのかを判断し、クエリ特定のための配列($wp->query_varsWP クラスのインスタンス。wp-includes/classes.php参照)に格納する。

プラグインで改造できるもの

上記で述べたデフォルトのクエリやパーマリンク構造に関して、プラグインで修正できるものを挙げます。修正の具体的な詳細はカスタムクエリを参照してください。

個人用ツール
名前空間
変種
操作
このサイトについて
特集
サーバ別情報
リファレンス
ドキュメント整備
ツールボックス