명령 줄 스크립트에서 사용할 WordPress 환경 초기화


25

워드 프레스 플러그인을 유지 관리하기위한 명령 줄 스크립트가 있으며 워드 프레스 기능에 액세스하려면 워드 프레스 코어를로드해야합니다.

이 문제는 실제 cron 스크립트에서 사용할 WordPress 환경 초기화 와 매우 유사 합니다 . 참조 된 질문이 명령 줄 PHP 스크립트를 시작하여 수행 할 수있는 (실제) 크론 스크립트와 함께 사용되어야하기 때문에 그것과 다릅니다. 언급 된 질문에 이미 답변되어 있으며이 답변이 내 요구를 충족시키지 못하기 때문에이 질문을 시작했습니다.

명령 행 스크립트에서 워드 프레스 환경을 초기화하는 데 필요한 것은 무엇입니까?

관련

답변:


27

나는 다음 해결책을 생각해 냈습니다. 스크립트는 다음 코드로 시작해야합니다.

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

관련


이것에 추가하기 위해 ob_end_clean();워드 프레스가 모든 출력을 캡처하고 마지막까지 아무것도 표시하지 않으므로 그 이후 에 실행하고 싶을 것 입니다.
Hosh Sadiq

13

수동으로로드 워드 프레스의 지저분한 과정을 처리하지 않으려면, 당신은 사용할 수 있습니다 WP-CLIeval-file명령을 :

wp eval-file my-script.php

my-script.php파일은 WP 함수 호출을 포함 할 수 있습니다. 예를 들면 다음과 같습니다.

<?php
global $wpdb;

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

그렇다면 아무 eval-file워드 프레스 기능을 사용할 수 require있습니까? 이 답변은 그러한 PHP 스크립트의 빠른 예를 통해 더 명확해질 것입니다.
Kaelin Colclasure

2
@KaelinColclasure Yep; 추가 된 예.
scribu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.