Initialiser l'environnement WordPress à utiliser dans un script de ligne de commande

22

J'ai un script en ligne de commande pour la maintenance d'un plugin wordpress et je dois charger le noyau wordpress pour pouvoir accéder aux fonctions wordpress.

Ce problème est très similaire à Initialize Environnement WordPress à utiliser dans un vrai script cron . Bien que cela en soit différent, la question renvoyée est supposée être utilisée avec un script (réel) cron qui peut être accompli autrement en démarrant un script php en ligne de commande. Comme la question posée a déjà reçu une réponse et que cette réponse ne répond pas à mes besoins, j'ai commencé cette question.

Alors, que faut-il dans un script de ligne de commande pour initialiser l'environnement wordpress?

Connexes

posée xaedes 18.12.2012 - 09:42
la source

2 réponses

22

Je suis venu avec la solution suivante. Le script doit commencer par le code suivant.

<?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');

Connexes

réponse donnée xaedes 18.12.2012 - 09:42
la source
12

Si vous ne souhaitez pas gérer le processus fastidieux de chargement manuel de WordPress, vous pouvez simplement utiliser le fichier WP-CLI .eval-file commande:

wp eval-file my-script.php

Le fichier my-script.php peut contenir n’importe quel appel de fonction WP. Par exemple:

<?php
global $wpdb;

echo implode( ' ', $wpdb->tables() ) . "\n";
    
réponse donnée scribu 11.03.2013 - 19:04
la source

Lire d'autres questions sur les étiquettes