เริ่มต้นสภาพแวดล้อม WordPress เพื่อใช้ในสคริปต์บรรทัดคำสั่ง


25

ฉันมีสคริปต์บรรทัดคำสั่งสำหรับการบำรุงรักษาปลั๊กอิน wordpress และต้องโหลดแกน wordpress เพื่อให้สามารถเข้าถึงฟังก์ชั่น WordPress

ปัญหานี้จะคล้ายกับสภาพแวดล้อมเริ่มต้น WordPress เพื่อการใช้งานในสคริปต์ แม้ว่ามันจะแตกต่างจากมันเป็นคำถามที่อ้างถึงควรใช้กับสคริปต์ cron (จริง) ซึ่งสามารถทำได้อย่างอื่นแล้วโดยการเริ่มต้นสคริปต์บรรทัดคำสั่ง php เนื่องจากคำถามที่ถูกอ้างถึงได้รับคำตอบแล้วและคำตอบนี้ไม่ตรงกับความต้องการของฉันฉันจึงเริ่มคำถามนี้

ดังนั้นสิ่งที่จำเป็นในสคริปต์บรรทัดคำสั่งเพื่อเริ่มต้นสภาพแวดล้อม wordpress คืออะไร?

ที่เกี่ยวข้อง

คำตอบ:


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();หลังจากนั้นมิฉะนั้น wordpress จะจับเอาท์พุททั้งหมดของคุณและจะไม่แสดงผลใด ๆ จนกว่าจะถึงตอนท้าย
Hosh Sadiq

13

หากคุณไม่ต้องการที่จะจัดการกับกระบวนการยุ่งของการโหลด WordPress ด้วยตนเองคุณก็สามารถใช้WP-CLIของeval-fileคำสั่ง:

wp eval-file my-script.php

my-script.phpไฟล์สามารถมีการเรียกใช้ฟังก์ชัน WP ใด ๆ ตัวอย่างเช่น:

<?php
global $wpdb;

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

ดังนั้นeval-fileทำให้ฟังก์ชั่น WordPress ทั้งหมดสามารถใช้งานได้โดยไม่ต้องทำrequireอะไรเลยเหรอ? คำตอบนี้จะชัดเจนยิ่งขึ้นด้วยตัวอย่างรวดเร็วของสคริปต์ PHP
Kaelin Colclasure

2
@KaelinColclasure Yep; ตัวอย่างที่เพิ่มเข้ามา
scribu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.