我正在尝试记录每个选项更新(稍后我将过滤掉不必要的选项)。我遇到了“update\\u option”和“updated\\u option”挂钩。它们正在触发,但问题是$old\\u value和$value为空和/或未定义。
当我不对$old\\u值和$value使用默认值时,我得到一个错误,即传入函数的参数太少。但根据WP文件,我应该得到这两个。
知道怎么了吗?
public function __construct()
{
add_action(\'update_option\', [$this, \'update\']);
}
/**
* @param $option string Name of the option to update
* @param $old_value mixed Old option value
* @param $value mixed New option value
*/
public function update($option, $old_value = "", $value = "")
{
/** @var $current_user WP_User */
global $current_user;
if ($old_value || $value) {
var_dump(\'old: \' . $old_value);
var_dump(\'new: \' . $value);
die;
}
if ($old_value == $value) {
return;
}
// do stuff
}
最合适的回答,由SO网友:Sally CJ 整理而成
语法应为:add_action(\'update_option\', [$this, \'update\'], 10, 3)
因为您的函数接受3个参数:
public function __construct()
{
add_action(\'update_option\', [$this, \'update\'], 10, 3);
}
PS:
add_action()
\'s
reference.