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

---

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

Profile key metrics for WordPress hooks (actions and filters).

## In this article

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

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

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

 [ View Open Issues (1) ](https://github.com/login?return_to=%2Fissues%3Fq%3Dlabel%3Acommand%3Aprofile-hook+sort%3Aupdated-desc+org%3Awp-cli+is%3Aopen)
[ View Closed Issues (3) ](https://github.com/login?return_to=%2Fissues%3Fq%3Dlabel%3Acommand%3Aprofile-hook+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. In order to profile callbacks on a specific hook, the action or filter will
need to execute during the course of the request.

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

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

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

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

### 󠀁[Options](https://developer.wordpress.org/cli/commands/profile/hook/?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.  [<hook>] Drill
into key metrics of callbacks on a specific WordPress hook. [--all] Profile callbacks
for all WordPress hooks. [--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>] Display one or more 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/hook/?output_format=md#examples)󠁿

    ```
    # Profile a hook.
    $ wp profile hook template_redirect --fields=callback,cache_hits,cache_misses
    +--------------------------------+------------+--------------+
    | callback                       | cache_hits | cache_misses |
    +--------------------------------+------------+--------------+
    | _wp_admin_bar_init()           | 0          | 0            |
    | wp_old_slug_redirect()         | 0          | 0            |
    | redirect_canonical()           | 5          | 0            |
    | WP_Sitemaps-&gt;render_sitemaps() | 0          | 0            |
    | rest_output_link_header()      | 3          | 0            |
    | wp_shortlink_header()          | 0          | 0            |
    | wp_redirect_admin_locations()  | 0          | 0            |
    +--------------------------------+------------+--------------+
    | total (7)                      | 8          | 0            |
    +--------------------------------+------------+--------------+
    ```

### 󠀁[Global Parameters](https://developer.wordpress.org/cli/commands/profile/hook/?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._