web-dev-qa-db-fra.com

Est-il possible de continuer WP-CLI via PHP-framework?

  1. J'ai l'application Zend Framework 2 (PHP), via laquelle je souhaite utiliser la fonctionnalité WP-CLI. près du projet Zend, j'ai un projet WordPress, que je veux gérer depuis Zend via WP-CLI.
  2. Je vois dans la documentation que WP-CLI a également écrit sur PHP. Je rêvais d'installer WP-CLI via composeur à la racine de mon projet et de pouvoir utiliser ses classes là-bas.
  3. Après l'installation via composer dans les sources de WP-CLI, je vois des fonctions de WordPress (comme is_multisite, etc.) et je suis un peu déçu :).

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?

1
Sergey Kondrushenko

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.

1
Mark Kaplun

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 );
0
swissspidy