挂接UPDATE_OPTION/UPDATED_OPTION空$old_Value和$Value

时间:2019-07-26 作者:Erik Kubica

我正在尝试记录每个选项更新(稍后我将过滤掉不必要的选项)。我遇到了“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
}

1 个回复
最合适的回答,由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()\'sreference.