我在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
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网友:JMau
听起来您的代码需要某种引导。WordPress已经启动,例如index.php
或wp-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。