question principale: est-ce que je peux en quelque sorte utiliser les sources WP-CLI directement à partir de mon projet Zend sans appeler de commandes via un terminal? par exemple (en langage de programmation abstrait):
$command = new WP_CLI::command('command_name subcommand_name', $params, $assoc_params, .....);
$result = $command->execute();
Ou bien WP-CLI a été créé uniquement dans le cadre du projet WordPress pour étendre ses commandes et il ne peut pas les utiliser tant que j'essaie?
C'est probablement imprudent. WP-CLI est développé comme un utilitaire de ligne de commande et peut ne pas maintenir la structure interne entre les versions.
Dans tous les cas, puisque tout doit fonctionner en tant que root, il n'y a pas de réelle différence entre l'exécution d'une commande WP-CLI via un shell (A.K.A exec
et sa famille de fonctions) et l'appel de n'importe quelle API.
La classe WP_CLI
a une méthode runcommand
qui lance un nouveau processus enfant pour exécuter une commande WP-CLI spécifiée. Selon la documentation , vous pouvez l'utiliser comme ceci:
$options = array(
'return' => true, // Return 'STDOUT'; use 'all' for full object.
'parse' => 'json', // Parse captured STDOUT to JSON array.
'launch' => false, // Reuse the current process.
'exit_error' => true, // Halt script execution on error.
);
$plugins = WP_CLI::runcommand( 'plugin list --format=json', $options );