Ejecutar WP-CLI usando PHP

18 ago 2017, 22:51:30
Vistas: 13.7K
Votos: 7

He instalado WP-CLI en Mac y mi siguiente paso es ejecutar comandos WP-CLI usando un script PHP.

Intenté implementarlo de la siguiente manera pero no veo que suceda nada. ¿Alguien podría revisar mi código y decirme qué estoy haciendo mal?

Estoy usando Docker y tengo WP instalado en el directorio Docker/xamp/www/wordpress_wwws/htdocs

¿Necesito ejecutar el código PHP desde dentro del directorio de WP o puede estar en cualquier directorio del servidor?

define( 'WP_CLI_ROOT', '/usr/local/bin/wp' );
include WP_CLI_ROOT . '';
$output = shell_exec("wp --info");
echo "<pre>".$output."</pre>";

¿Necesito configurar y preparar wp-cli con mis archivos PHP?

Además, cuando escribo wp --info en mi terminal aparece la siguiente información. No aparece nada junto al Directorio de Paquetes y config global. ¿También necesito hacer ajustes a wp-cli?

MAC-00343:htdocs mike$ wp --info
PHP binary: /usr/bin/php
PHP version:    5.6.30
php.ini used:   
WP-CLI root dir:    phar://wp-cli.phar
WP-CLI vendor dir:  phar://wp-cli.phar/vendor
WP_CLI phar path:   /Users/mike/Docker/xamp/www/wordpress_wwws/htdocs
WP-CLI packages dir:    
WP-CLI global config:   
WP-CLI project config:  
WP-CLI version: 1.3.0

Cualquier ayuda o sugerencia será muy apreciada.

Gracias

0
Todas las respuestas a la pregunta 1
1
12

En cuanto a la salida de wp --info, eso tiene sentido. Si no tienes ningún paquete instalado (ver wp package --help) o archivos de configuración global (wp-cli.yml), entonces esos elementos estarían vacíos.

Puedes ejecutar el comando wp desde cualquier ubicación. Si estás dentro de la estructura de carpetas de tu sitio web, detectará automáticamente el sitio en el que estás navegando hacia arriba en el árbol de directorios hasta encontrar un archivo wp-config.php.

Si ejecutas wp desde una ubicación fuera de la estructura de carpetas de tu sitio, tendrás que especificar la ruta, así:

wp --path=/ruta/al/sitio/wordpress/ core version

En cuanto a ejecutar comandos desde PHP, lo siguiente funciona para mí:

test.php

<?php
$output = shell_exec("wp --info");
echo "<pre>".$output."</pre>";
?>

Al ejecutar php test.php desde la línea de comandos, obtengo:

PHP binary:    /usr/local/Cellar/php71/7.1.1_12/bin/php
PHP version:    7.1.1
php.ini used:   /usr/local/etc/php/7.1/php.ini
WP-CLI root dir:    phar://wp-cli.phar
WP-CLI vendor dir:  phar://wp-cli.phar/vendor
WP_CLI phar path:   /Users/shawnhooper
WP-CLI packages dir:    /Users/shawnhooper/.wp-cli/packages/
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 1.3.0

También hay una discusión bastante extensa sobre la ejecución de comandos WP-CLI desde PHP en el repositorio oficial de GitHub del proyecto. Podría interesarte este issue: https://github.com/wp-cli/wp-cli/issues/1924

19 ago 2017 00:01:11
Comentarios

Gracias Shawn, las sugerencias de la página de github de WP-CLI me ayudaron a ejecutar comandos desde el script PHP.

WKL WKL
21 ago 2017 20:01:04