Title: wp profile stage
Published: February 5, 2018
Last modified: May 23, 2026

---

# 󠀁[wp profile stage ](https://developer.wordpress.org/cli/commands/profile/stage/)󠁿

Profile each stage of the WordPress load process (bootstrap, main_query, template).

## In this article

 * [Installing](https://developer.wordpress.org/cli/commands/profile/stage/?output_format=md#installing)
 * [Options](https://developer.wordpress.org/cli/commands/profile/stage/?output_format=md#options)
 * [Examples](https://developer.wordpress.org/cli/commands/profile/stage/?output_format=md#examples)
 * [Global Parameters](https://developer.wordpress.org/cli/commands/profile/stage/?output_format=md#global-parameters)

[ Back to top](https://developer.wordpress.org/cli/commands/profile/stage/?output_format=md#wp--skip-link--target)

 [ ⌊GitHub⌉ ](https://github.com/wp-cli/profile-command)

 [ View Open Issues (0) ](https://github.com/login?return_to=%2Fissues%3Fq%3Dlabel%3Acommand%3Aprofile-stage+sort%3Aupdated-desc+org%3Awp-cli+is%3Aopen)
[ View Closed Issues (4) ](https://github.com/login?return_to=%2Fissues%3Fq%3Dlabel%3Acommand%3Aprofile-stage+sort%3Aupdated-desc+org%3Awp-cli+is%3Aclosed)
[Create New Issue](https://github.com/wp-cli/profile-command/issues/new)

This command runs on the `before_wp_load` hook, just before the WP load process 
begins. When WordPress handles a request from a browser, it’s essentially executing
as one long PHP script. `wp profile stage` breaks the script into three stages:

 * **bootstrap** is where WordPress is setting itself up, loading plugins and the
   main theme, and firing the `init` hook.
 * **main_query** is how WordPress transforms the request (e.g. `/2016/10/21/moms-
   birthday/`) into the primary [WP_Query](https://developer.wordpress.org/reference/classes/wp_query/).
 * **template** is where WordPress determines which theme template to render based
   on the main query, and renders it.

### 󠀁[Installing](https://developer.wordpress.org/cli/commands/profile/stage/?output_format=md#installing)󠁿

Use the `wp profile stage` command by installing the command’s package:

    ```
    wp package install wp-cli/profile-command
    ```

Once the package is successfully installed, the `wp profile stage` command will 
appear in the list of available commands.

### 󠀁[Options](https://developer.wordpress.org/cli/commands/profile/stage/?output_format=md#options)󠁿

 See the [argument syntax](https://make.wordpress.org/cli/handbook/references/argument-syntax/)
reference for a detailed explanation of the syntax conventions used.  [<stage>] 
Drill down into a specific stage. [--all] Expand upon all stages. [--spotlight] 
Filter out logs with zero-ish values from the set. [--url=<url>] Execute a request
against a specified URL. Defaults to the home URL. [--fields=<fields>] Limit the
output to specific fields. Default is all fields. [--format=<format>] Render output
in a particular format. 
—default: table options: – table – json – yaml – csv— [--
order=<order>] Ascending or Descending order. —default: ASC options: – ASC – DESC—[--
orderby=<fields>] Set orderby which field.

### 󠀁[Examples](https://developer.wordpress.org/cli/commands/profile/stage/?output_format=md#examples)󠁿

    ```
    # See an overview for each stage of the load process.
    $ wp profile stage --fields=stage,time,cache_ratio
    +------------+---------+-------------+
    | stage      | time    | cache_ratio |
    +------------+---------+-------------+
    | bootstrap  | 0.7994s | 93.21%      |
    | main_query | 0.0123s | 94.29%      |
    | template   | 0.792s  | 91.23%      |
    +------------+---------+-------------+
    | total (3)  | 1.6037s | 92.91%      |
    +------------+---------+-------------+

    # Dive into hook performance for a given stage.
    $ wp profile stage bootstrap --fields=hook,time,cache_ratio --spotlight
    +--------------------------+---------+-------------+
    | hook                     | time    | cache_ratio |
    +--------------------------+---------+-------------+
    | muplugins_loaded:before  | 0.2335s | 40%         |
    | muplugins_loaded         | 0.0007s | 50%         |
    | plugins_loaded:before    | 0.2792s | 77.63%      |
    | plugins_loaded           | 0.1502s | 100%        |
    | after_setup_theme:before | 0.068s  | 100%        |
    | init                     | 0.2643s | 96.88%      |
    | wp_loaded:after          | 0.0377s |             |
    +--------------------------+---------+-------------+
    | total (7)                | 1.0335s | 77.42%      |
    +--------------------------+---------+-------------+
    ```

### 󠀁[Global Parameters](https://developer.wordpress.org/cli/commands/profile/stage/?output_format=md#global-parameters)󠁿

 These [global parameters](https://make.wordpress.org/cli/handbook/config/) have
the same behavior across all commands and affect how WP-CLI interacts with WordPress.

  |  **Argument** |  **Description** |  
   |  `--path=<path>` |  Path to the WordPress files. |  
 |  `--url=<url>` |  Pretend request came from given URL. In multisite, this argument is how the target site is specified. |  
 |  `--ssh=[<scheme>:][<user>@]<host\|container>[:<port>][<path>]` |  Perform operation against a remote server over SSH (or a container using scheme of “docker”, “docker-compose”, “docker-compose-run”, “vagrant”). |  
 |  `--http=<http>` |  Perform operation against a remote WordPress installation over HTTP. |  
 |  `--user=<id\|login\|email>` |  Set the WordPress user. |  
 |  `--skip-plugins[=<plugins>]` |  Skip loading all plugins, or a comma-separated list of plugins. Note: mu-plugins are still loaded. |  
 |  `--skip-themes[=<themes>]` |  Skip loading all themes, or a comma-separated list of themes. |  
 |  `--skip-packages` |  Skip loading all installed packages. |  
 |  `--require=<path>` |  Load PHP file before running the command (may be used more than once). |  
 |  `--exec=<php-code>` |  Execute PHP code before running the command (may be used more than once). |  
 |  `--context=<context>` |  Load WordPress in a given context. |  
 |  `--[no-]color` |  Whether to colorize the output. |  
 |  `--debug[=<group>]` |  Show all PHP errors and add verbosity to WP-CLI output. Built-in groups include: bootstrap, commandfactory, and help. |  
 |  `--prompt[=<assoc>]` |  Prompt the user to enter values for all command arguments, or a subset specified as comma-separated values. |  
 |  `--quiet` |  Suppress informational messages. |

 _Command documentation is regenerated at every release. To add or update an example,
please submit a pull request against the corresponding part of the codebase._