Ejecutar WP-CLI usando PHP
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
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
