はてブpocketWordPressエンジニア向け入門その3です。『WordPressエンジニア向け入門その2、パーマリンクを理解する』は、WordPressのパーマリンクについて説明しました。今回はその続きでパーマリンクとリクエストに関する話です。リクエストの仕組みを理解しましょう。WordPressのリクエストを理解できれば、サイト構成を自在に操ることができると言っても過言ではありません。参考リンクリクエストの仕組み概要WordPressのリクエストの仕組みはざっくりいうと以下になります。WordPressルートのindex.phpにて処理開始リクエストURLを解析し、ページ種類を決定する本記事ではここまでを扱います。以降の処理は以下のとおりです。詳細は次回以降の記事にて扱います。画面表示それでは順に見ていきましょう。パーマリンク設定がデフォルト(ugly)以外に設定されている必要があります。『WordPressエンジニア向け入門その2、パーマリンクを理解する』をご覧ください。最初に、リクエストされたURLをサーバーが処理します。WordPressはPHPで動作しており、通常Webサーバーとして、Apacheかnginxを利用していると思います。Apacheを例に説明します。Apacheにmod_rewriteというURL書き換えの仕組みがあります。リクエストされたURLから特定のルールに合致すればindex.phpへのリクエストとみなします。そのルールが記載されているものが.htaccessというファイルです。WordPressをインストールすると、ルートフォルダに.htaccessが作られます。内容は以下のとおりです。WordPress意味としては、リクエストされたURLに該当するファイルかディレクトリが存在しなければ、index.phpで処理をしなさいというルールです。http://www.example.com/fooへリクエストがあった場合、WordPressのインストールディレクトリにfooというファイルかディレクトリがあるかどうか探します。なければindex.phpへ処理を渡すといった感じです。phpinfo.phpというファイルがあればURLの書き換えは行われず、phpinfo.phpの内容が処理されます。ほとんどの場合、リクエストされたURLにマッチするファイルやディレクトリは存在せず、index.phpにて処理が開始されることになります。これがWordPressの処理の出発点となります。WordPressルートのindex.phpに処理が渡ったら初期処理等、さまざまな処理が実行されます。処理全体の流れは『WordPressエンジニア向け入門その1、ページが表示されるまでの仕組み』をご覧ください。リクエストを解析し、ページ種類を決定するindex.phpから始まる各種処理の中で、リクエストの解析処理があります。リクエストを解析することでページ種類を決定します。リクエストされたURL(パーマリンク)に応じてページ種類を決定するものです。主なページ種類は以下のとおりです。)個別ページ(投稿・固定ページ)サイトフロントページ404エラーページ検索結果ページこれらのどれに該当するか、リクエスト解析処理にて判定します。パーマリンクのリライトルールです。WordPressでは、URLのパラメータをもとにリクエストを解析します。パーマリンクをパラメータに変換する必要があります。その変換のルールがリライトルールです。以下のような変換が必要です。http://example.com/index.php?category_name=fooリライトルールはWordPressであらかじめ規定されています。リライトルールとは、パーマリンクと各種パラメータとの対応表みたいなものをイメージしてください。以下が実際のリライトルールの一部です。'index.php?&paged=$matches[1]'リライトルールは配列として定義されています。配列のキーが正規表現、値が正規表現にマッチした際のリライトルールです。カテゴリアーカイブページ(http://example.com/category/foo)にリクエストがあった場合、パーマリンク:category/foo正規表現:category/(.+?)/?$に一致index.php?category_name=fooというパラメータと解釈となります。受付可能なパラメータパーマリンクをパラメータ形式に変換してリクエストを解析していることがわかりました。どのようなパーマリンクでも変換してくれるのでしょうか。WordPressでは規定のリライトルールがあり、受付可能なパラメータも決められています。以下がデフォルトで受付可能なパラメータです。mppostswcatwithcommentswithoutcommentsssearchexactsentencecalendarpagepagedmoretbpbauthororderorderbyyearmonthnumdayhourminutesecondnamecategory_nametagfeedauthor_namestaticpagenamepage_iderrorattachmentattachment_idsubpostsubpost_idpreviewrobotstaxonomytermcpagepost_typeembedpost_formatrest_routeこれらのパラメータはリライトルールでマッチした際に使用されています。category_nameが規定されているパラメータです。パラメータの種類や組み合わせに応じて、ページの種類が決定します。パーマリンクのカスタマイズWordPressにはデフォルトでリライトルールと受付可能なパラメータが決まっていることがわかりました。自由自在なパーマリンクの設定はできないということでしょうか?いいえ、可能です。具体的な方法は次回以降に譲るとしてかんたんに言うと、以下の2つのフックを利用すれば可能です。受付可能なパラメータ追加まとめいかがでしたでしょうか。リクエストの解析とページ種類の決定について理解できましたでしょうか。一度おさらいすると、index.phpにて処理開始リライトルールにそってパーマリンクをパラメータ形式に変換パラメータの組み合わせを元にページ種類決定です。次回はページ種類の決定後、データ取得処理について見ていきたいと思います。Lite版スポンサーリンクこの記事が気に入っていただけたらシェアお願いします。22:16とても勉強になりました。ありがとうございました。自由自在なパーマリンクの設定〜具体的な方法は次回以降に譲る...この記事もぜひ読んでみたいです。コメントをキャンセルメールアドレスが公開されることはありません。Web担当者として日々学んだことを書いていきます。