UPDATE_OPTION在独立的PHP脚本中不起作用

时间:2013-10-29 作者:iglvzx

我在WordPress主题的目录中有一个独立的PHP脚本,我通过cron作业每小时运行一次(或者在需要时手动运行)。除了update_option() 作用

我的脚本的简化版本如下所示:

require_once(\'/path/to/site/wp-load.php\');

$value = my_function();
update_option(\'my_option\', $value);
在我的一个主题文件中,我运行以下代码:

echo get_option(\'my_option\');
未打印任何内容var_dump 显示返回值为false.

我的wp-admin/options.php 页面未列出my_option 任何一个

我不知所措,因为在这些行下面,我正在使用以下WordPress函数与我的WordPress数据库成功交互:

调试我的脚本,my_function 返回一个字符串(大约10个字符),并且不会在E_ALL.

我需要包括其他WordPress核心文件吗?我以为wp-load.php 这就是你所需要的。

WordPress版本:3.7

4 个回复
SO网友:brasofilo

我不知道为什么它对您不起作用,但以下内容在文件中起作用wp-content/test.php:

<?php
// doesn\'t make difference to have this or not, for the rest to work
define( \'WP_USE_THEMES\', false ); 

require( $_SERVER[\'DOCUMENT_ROOT\'] .\'/wp-load.php\' );

function my_function()
{
    return \'hello world\';
}

$value = my_function();
update_option( \'my_option\', $value );
var_dump( get_option( \'my_option\' ) );

SO网友:Bindiya Patoliya

在文件顶部添加这两行

 $parse_uri = explode( \'wp-content\', $_SERVER[\'SCRIPT_FILENAME\'] );
 require_once( $parse_uri[0] . \'wp-load.php\' );
它加载所有WordPress,但不调用wp()或调用模板加载器(由主题使用)。

SO网友:JMau

听起来您的代码需要某种引导。WordPress已经启动,例如index.phpwp-load.php 甚至wp-blog-header.php.

这是:

require_once(\'/path/to/site/wp-load.php\');
不建议使用,因为路径可以修改。要获得一些引导,您可以做的是:

// Load WP
$load = \'wp-load.php\';
while( !is_file( $load ) ) {
if( is_dir( \'..\' ) ) 
    chdir( \'..\' );
else
    die( \'Could not find WordPress in this place!\');
}
require_once( $load );
这样,您几乎可以在任何情况下加载WordPress。

SO网友:Svetoslav Marinov

这是一个非常古老的问题,但我仍将对此发表评论。现在您有了多种选择:WP-CLI应该可以在几乎所有情况下工作。另一种选择是创建一个自定义插件,该插件钩住“init”事件并执行一些操作。

结束

相关推荐

Multi Upload In Theme Options

我需要在主题选项页面上使用WordPress媒体上传。它需要能够在一个页面上有多个字段。我在网站上看到了一些使用搜索的东西,但没有最新的,也没有我能找到的工作。有人能告诉我一个简单的方法吗。确实希望使用新的库样式,从媒体库中选择图片,或选择上载。