初始化WordPress环境以在命令行脚本中使用

时间:2012-12-18 作者:xaedes

我有一个用于维护wordpress插件的命令行脚本,必须加载wordpress核心才能访问wordpress功能。

这个问题与Initialize WordPress environment to use in a real cron script. 虽然它与它不同,因为所提到的问题应该与(真实的)cron脚本一起使用,否则可以通过启动命令行php脚本来完成。由于所提到的问题已经得到了回答,而这个答案不能满足我的需要,我开始了这个问题。

那么,在命令行脚本中初始化wordpress环境需要什么呢?

Related

2 个回复
最合适的回答,由SO网友:xaedes 整理而成

我想出了以下解决方案。脚本必须从以下代码开始。

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

SO网友:scribu

如果您不想处理手动加载WordPress的混乱过程,您可以使用WP-CLI\'seval-file 命令:

wp eval-file my-script.php
Themy-script.php 文件可以包含任何WP函数调用。例如:

<?php
global $wpdb;

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

结束

相关推荐

在WordPress之外使用wp-load.php时出现问题

我正在尝试使用wp load。php在wordpress之外的页面中,这样我就可以访问wordpress中的所有函数。通常我只包含如下文件require( $_SERVER[\'DOCUMENT_ROOT\'].\'/blog/wp-load.php\' ); 但它似乎不起作用。关于可能发生的事情有什么建议吗?谢谢,保罗