php/class-wp-cli.php
public static function add_hook( $when, $callback ) {
		if ( array_key_exists( $when, self::$hooks_passed ) ) {
			self::debug(
				sprintf(
					'Immediately invoking on passed hook "%s": %s',
					$when,
					Utils\describe_callable( $callback )
				),
				'hooks'
			);
			call_user_func_array( $callback, (array) self::$hooks_passed[ $when ] );
		}

		self::$hooks[ $when ][] = $callback;
	}
public static function add_hook( $when, $callback ) {
		if ( array_key_exists( $when, self::$hooks_passed ) ) {
			self::debug(
				sprintf(
					'Immediately invoking on passed hook "%s": %s',
					$when,
					Utils\describe_callable( $callback )
				),
				'hooks'
			);
			call_user_func_array( $callback, (array) self::$hooks_passed[ $when ] );
		}

		self::$hooks[ $when ][] = $callback;
	}
public static function add_hook ( $ when , $ callback ) { if ( array_key_exists ( $ when , self :: $ hooks_passed ) ) { self :: debug ( sprintf ( 'Immediately invoking on passed hook "%s": %s' , $ when , Utils \ describe_callable ( $ callback ) ) , 'hooks' ) ; call_user_func_array ( $ callback , ( array ) self :: $ hooks_passed [ $ when ] ) ; } self :: $ hooks [ $ when ] [ ] = $ callback ; }
Schedule a callback to be executed at a certain point.

Hooks conceptually are very similar to WordPress actions. WP-CLI hooks
are typically called before WordPress is loaded.

WP-CLI hooks include:

* `before_add_command:<command>` - Before the command is added.
* `after_add_command:<command>` - After the command was added.
* `before_invoke:<command>` - Just before a command is invoked.
* `after_invoke:<command>` - Just after a command is invoked.
* `find_command_to_run_pre` - Just before WP-CLI finds the command to run.
* `before_wp_load` - Just before the WP load process begins.
* `before_wp_config_load` - After wp-config.php has been located.
* `after_wp_config_load` - After wp-config.php has been loaded into scope.
* `after_wp_load` - Just after the WP load process has completed.
* `before_run_command` - Just before the command is executed.

WP-CLI commands can create their own hooks with `WP_CLI::do_hook()`.

If additional arguments are passed through the `WP_CLI::do_hook()` call,
these will be passed on to the callback provided by `WP_CLI::add_hook()`.

```
# `wp network meta` confirms command is executing in multisite context.
WP_CLI::add_command( 'network meta', 'Network_Meta_Command', array(
'before_invoke' => function () {
if ( !is_multisite() ) {
WP_CLI::error( 'This is not a multisite installation.' );
}
}
) );
```

@access public
@category Registration

@param string $when Identifier for the hook.
@param mixed $callback Callback to execute when hook is called.
@return null
Schedule a callback to be executed at a certain point .