29

I use the wonderful WP-CLI tool. Due to dependence on Apache environment variables for a specific use case, I need to enable a bit of code to run only when running under WP-CLI. How can I detect if WP is running under WP-CLI?

In this specific case I could check for the presence of the Apache environment variables in question. However, I would like to know the more general, canonical method to check. Thank you.

2 Answers 2

39

Within the php/wp-cli.php we find these lines:

// Can be used by plugins/themes to check if WP-CLI is running or not
define( 'WP_CLI', true );
define( 'WP_CLI_VERSION', trim( file_get_contents( WP_CLI_ROOT . '/VERSION' ) ) );
define( 'WP_CLI_START_MICROTIME', microtime( true ) );

so you could check if WP_CLI or WP_CLI_VERSION are defined.

4
  • 8
    WP_CLI is the preferred constant to check Commented May 10, 2016 at 11:55
  • Thanks for commenting - yes and also much shorter, was just wondering about other possibilities ;-) @DanielBachhuber
    – birgire
    Commented May 10, 2016 at 12:27
  • @dotancohen you should consider accepting the answer by Ryan McCue instead, as it shows explicitly how to check it.
    – birgire
    Commented May 10, 2016 at 14:20
  • @birgire, may I ask you to have a look at a custom field related question here : wordpress.stackexchange.com/questions/265852/… ? Commented May 4, 2017 at 19:36
40

The canonical check for WP-CLI, which is used in most plugins and is explicitly mentioned in the docs, is the check whether WP_CLI is defined and set to true:

if ( defined( 'WP_CLI' ) && WP_CLI ) {
    // Do WP-CLI specific things.
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.