Komut satırı komut dosyasında kullanmak için WordPress ortamını başlat


25

Bir wordpress eklentisini sürdürmek için bir komut satırı betiğim var ve wordpress işlevlerine erişebilmek için wordpress çekirdeğini yüklemeliyim.

Bu sorun, gerçek bir cron betiğinde kullanmak için WordPress ortamını başlatmaya çok benzer . Her ne kadar başvuruda bulunulan soru, aksi takdirde daha sonra bir komut satırı php betiği başlatarak gerçekleştirilebilecek olan (gerçek) bir cron betiği ile kullanılması beklendiğinden farklıdır. Bahsi geçen soru zaten cevaplandı ve bu cevap ihtiyaçlarımı karşılamadığı için bu soruyu başlattım.

Peki bir komut satırı komut dosyasında wordpress ortamını başlatmak için ne gereklidir?

İlgili

Yanıtlar:


27

Aşağıdaki çözümü buldum. Betik aşağıdaki kodla başlamalıdır.

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

İlgili


Sadece buna eklemek için ob_end_clean();, bundan sonra koşmak isteyeceksiniz , aksi halde wordpress tüm çıktılarınızı yakalar ve sonuna kadar hiçbir şey göstermez.
Hosh Sadiq

13

El yükleme WordPress'in dağınık süreci ile uğraşmak istemiyorsanız, sadece kullanabilirsiniz WP-Cli 'ın eval-filekomutu:

wp eval-file my-script.php

my-script.phpDosya herhangi WP işlev çağrısı içerebilir. Örneğin:

<?php
global $wpdb;

echo implode( ' ', $wpdb->tables() ) . "\n";

Yani eval-filetüm WordPress fonksiyonlarını requirehiçbir şeye gerek kalmadan erişilebilir kılıyor ? Bu cevap, böyle bir PHP betiğinin hızlı bir örneği ile daha açık olacaktır.
Kaelin Colclasure

2
@KaelinColclasure Yep; örnek eklendi.
scribu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.