WordPress: ページが表示されるまでに発火する主要なフック


/index.php
+-/wp-blog-header.php
  +-/wp-load.php
  | +-/wp-config.php
  |   +-/wp-settings.php
  |     +-/wp-includes/script-loader.php
  |     +-'plugin_loaded'
  |     +-'plugins_loaded'
  |     +-'init'
  +-wp()
  | +-WP::main() // /wp-includes/class-wp.php
  |   +-WP::parse_request()
  |   | +-'query_vars'
  |   | +-'request'
  |   | +-'parse_request'
  |   +-WP::send_headers() // header() 発行
  |   +-WP::query_posts()
  |   | +-WP_Query::query()
  |   |   +-WP_Query::get_posts()
  |   |     +-'pre_get_posts'
  |   +-'wp'
  +-/wp-includes/template-loader.php
    +-テンプレートファイル
      +-wp_head()
      | +-'wp_head'
      |   +-'wp_enqueue_scripts' // /wp-includes/default-filters.php
      +-wp_footer()
        +-'wp_footer'

  • init‘: プラグインの読み込みなど主要な設定が終了後に発火する。サイトの設定に関わる以下のような関数はこのフックを使う。
    • add_rewrite_rule(), add_rewrite_tag(), add_post_type_support()
  • query_vars‘: URLパラメーターを追加する。
  • request‘: クエリー変数がパースされた後に発火する。
  • parse_request‘: タイミングは ‘request’ フックと同じ。こちらはアクションフックであり、WPオブジェクトが参照渡しされる。
  • pre_get_posts‘: クエリー発行直前。クエリーはあるページを書き出すために何回も呼ばれるが、一番最初の ‘pre_get_posts’(メインクエリー) は ‘wp’ よりも先に発火する。
  • wp‘: メインクエリーの結果取得後。一度しか発火しない。
  • wp_head‘: テンプレートファイルの wp_head() が置かれた位置で発火する。/wp-includes/default-filters.php にはこのフックに大量のフックが登録されており、’wp_enqueue_scripts’ もその一つ。

タグ

🏷️

(Page info for admin)