Cum să inițializezi mediul WordPress pentru utilizarea într-un script de linie de comandă

18 dec. 2012, 10:42:44
Vizualizări: 19.4K
Voturi: 32

Am un script de linie de comandă pentru întreținerea unui plugin WordPress și trebuie să încarc core-ul WordPress pentru a putea accesa funcțiile WordPress.

Această problemă este foarte asemănătoare cu Inițializarea mediului WordPress pentru utilizarea într-un script cron real. Totuși, diferă de aceasta deoarece întrebarea menționată este destinată pentru utilizarea cu un script cron (real) care poate fi realizat altfel decât prin pornirea unui script PHP de linie de comandă. Deoarece întrebarea menționată este deja răspunsă și acest răspuns nu îmi satisface nevoile, am început această întrebare.

Deci, ce este necesar într-un script de linie de comandă pentru a inițializa mediul WordPress?

Legături utile

0
Toate răspunsurile la întrebare 2
1
36

Am venit cu următoarea soluție. Scriptul trebuie să înceapă cu următorul cod.

<?php
    if( php_sapi_name() !== 'cli' ) {
        die("Menit să ruleze din linia de comandă");
    }

    function find_wordpress_base_path() {
        $dir = dirname(__FILE__);
        do {
            //este posibil să verifici pentru alte fișiere aici
            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');

Legături utile

18 dec. 2012 10:42:44
Comentarii

Doar pentru a adăuga la asta, ar fi bine să executați ob_end_clean(); după aceea, altfel WordPress captează toată ieșirea și nu afișează nimic până la final.

Hosh Sadiq Hosh Sadiq
30 mai 2016 15:45:49
2
18

Dacă nu doriți să vă ocupați de procesul complicat de încărcare manuală a WordPress, puteți utiliza comanda eval-file din WP-CLI:

wp eval-file my-script.php

Fișierul my-script.php poate conține orice apel de funcție WP. De exemplu:

<?php
global $wpdb;

echo implode( ' ', $wpdb->tables() ) . "\n";
11 mar. 2013 20:04:21
Comentarii

Deci eval-file face toate funcțiile WordPress disponibile fără a fi nevoie să require orice? Acest răspuns ar fi mai clar cu un exemplu rapid al unui astfel de script PHP.

Kaelin Colclasure Kaelin Colclasure
8 sept. 2014 19:20:42

@KaelinColclasure Da; am adăugat un exemplu.

scribu scribu
8 sept. 2014 20:24:20