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

此问题与在实际的cron脚本中使用WordPress初始化环境非常相似。尽管它与它不同,因为所提到的问题应该与(真实的)cron脚本一起使用,否则可以通过启动命令行php脚本来实现。由于所提到的问题已得到回答,并且此回答不能满足我的需求,因此我开始提出此问题。 />相关的


初始化WordPress环境以在真实的cron脚本中使用


#1 楼

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

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


相关的


当wordpress核心为未加载
https://stackoverflow.com/questions/9101503/include-wordpress-core-into-own-scripts


评论


只需添加此内容,您就可以运行ob_end_clean();。之后,否则wordpress会捕获您的所有输出,直到最后才显示任何内容。

–霍希·萨迪克(Hosh Sadiq)
16年5月30日在12:45

#2 楼

如果您不想处理手动加载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功能都可用而无需任何要求?借助此类PHP脚本的快速示例,此答案将更加清楚。

– Kaelin Colclasure
2014年9月8日在16:20

@KaelinColclasure是的;添加了示例。

–抄写员
2014年9月8日于17:24