Posted on Leave a comment

Why Use the wp profile WP-CLI Command?

wp profile - WP CLI Command

What is the wp profile Command in WP-CLI?

wp profile command is designed for finding where and what is slowing a site down. As with any performance benchmarking, multiple runs will need to be used. Start by running the common commands for wp profile multiple times. This will help you find what is causing WordPress to load slowly on a site.

wp profile stage

This command will output a number of options in the table. They are broken down as:

  • 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.
  • template is where WordPress determines which theme template to render based on the main query, and renders it.

This command will load WordPress, as if a user requested it in a browser.

wp profile stage bootstrap

This command will show the results for only when WordPress is loading.

wp profile hook --all --spotlight

The spotlight option will show you where those hooks are being used.

wp profile hook --all --spotlight --url=https://mainwp.com/presales-faq/

In this example command a specific page on the MainWP site is simulated loading in a user’s browser, then it will display which plugins and theme files are being loaded on it. You can use this command to load a specific URL page and then compare between those pages.

wp profile hook --all --spotlight --skip-plugins=contact-form-7

In this example command, wp profile hook will profile the hooks being used by WordPress, then will simulate skipping a specific plugin, which might be causing performance issues on a site.

You can compare the results (with/without specific plugins active), but without having to use WP-CLI to deactivate a plugin.

wp plugin deactivate contact-form-7

This would be the command that would need to be run to deactivate a plugin to be able to run the spotlight on a specific URL, but using the --skip-plugin option, you do not have to actually deactivate a plugin for it to be not included in the results.

wp profile hook --all --spotlight --url=https://mainwp.com/presales-faq/
wp profile hook plugins_loaded --url=https://mainwp.com --fields=callback,time,location

This command will load the plugins which are needed on the site URL being profiled, then it will show which fields are causing the performance issue. With minor digging, you will be able to find which exact plugins are causing issues on the site with regards to performance. So by finding the plugins causing load issues on the site page, you will disable those plugins from loading on specific pages or changing those plugins with plugins which are more performance optimized.

All of the wp profile commands mentioned in the post are in this Gist.

Using wp profile command is similar to using New Relic, but without having to set up a New Relic APM account, installing a New Relic WordPress plugin, or having to login to New Relic and drill through the results to find what plugin or database query might be causing performance issues. By using WP-CLI more and more, it will become second nature and will improve your site maintenance.

Get MainWP News and Notifications

Sebastian Moran on Github
Sebastian Moran
Sebastian Moran is a WordPress performance expert and technical liaison for MainWP.
Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.