Inicialice el entorno de WordPress para usarlo en el guión de la línea de comandos

22

Tengo un script de línea de comandos para mantener un plugin de wordpress y tengo que cargar el núcleo de wordpress para poder acceder a las funciones de wordpress.

Este problema es muy similar a Initialize Entorno de WordPress para usar en un script cron real . Aunque difiere de él, ya que la pregunta referida se supone para uso con un script cron (real) que se puede lograr de otra manera, iniciando un script php de línea de comando. Como la pregunta referida ya está respondida y esta respuesta no satisface mis necesidades, comencé esta pregunta.

Entonces, ¿qué es necesario en un script de línea de comandos para inicializar el entorno de wordpress?

Relacionados

pregunta xaedes 18.12.2012 - 09:42

2 respuestas

22

Se me ocurrió la siguiente solución. El script debe comenzar con el siguiente código.

<?php
    if( php_sapi_name() !== 'cli' ) {
        die("Meant to be run from command line");
    }

    function find_wordpress_base_path() {
        $dir = dirname(__FILE__);
        do {
            //it is possible to check for other files here
            if( file_exists($dir."/wp-config.php") ) {
                return $dir;
            }
        } while( $dir = realpath("$dir/..") );
        return null;
    }

    define( 'BASE_PATH', find_wordpress_base_path()."/" );
    define('WP_USE_THEMES', false);
    global $wp, $wp_query, $wp_the_query, $wp_rewrite, $wp_did_header;
    require(BASE_PATH . 'wp-load.php');

Relacionados

respondido por el xaedes 18.12.2012 - 09:42
12

Si no quiere lidiar con el complicado proceso de cargar WordPress de forma manual, solo puede usar el WP-CLI 's eval-file comando:

wp eval-file my-script.php

El archivo my-script.php puede contener cualquier llamada de función WP. Por ejemplo:

<?php
global $wpdb;

echo implode( ' ', $wpdb->tables() ) . "\n";
    
respondido por el scribu 11.03.2013 - 19:04

Lea otras preguntas en las etiquetas