我已经为这个问题挣扎了好几个小时,现在发生的是在将值插入db之前的某个地方,调用了这个操作。
do_action_ref_array(\'h5p_alter_user_result\', array(&$data, $result_id, $content_id, $user_id));
以下是值及其填充方式。$user_id = get_current_user_id();
$result_id = $wpdb->get_var($wpdb->prepare(
"SELECT id
FROM {$wpdb->prefix}h5p_results
WHERE user_id = %d
AND content_id = %d",
$user_id,
$content_id
));
$table = $wpdb->prefix . \'h5p_results\';
$data = array(
\'score\' => filter_input(INPUT_POST, \'score\', FILTER_VALIDATE_INT),
\'max_score\' => filter_input(INPUT_POST, \'maxScore\', FILTER_VALIDATE_INT),
\'opened\' => filter_input(INPUT_POST, \'opened\', FILTER_VALIDATE_INT),
\'finished\' => filter_input(INPUT_POST, \'finished\', FILTER_VALIDATE_INT),
\'time\' => filter_input(INPUT_POST, \'time\', FILTER_VALIDATE_INT)
);
if ($data[\'time\'] === NULL) {
$data[\'time\'] = 0;
}
$format = array(
\'%d\',
\'%d\',
\'%d\',
\'%d\',
\'%d\'
);
$content_id = 1;
我想做的是,我想在将这些值保存到数据库之前修改它们(是的,在保存到db之前调用这个钩子),为此,我在插件中创建了以下功能。add_action( \'h5p_alter_user_result\', \'diff_test_callback\' );
function diff_test_callback($args)
{
global $wpdb;
$user_id = 1;
$result_id = 1;
$content_id = 1;
$table = $wpdb->prefix . \'h5p_results\';
$data = array(
\'score\' => 777,
\'max_score\' => 189,
\'opened\' => 333,
\'finished\' => 222,
\'time\' => 111
);
if ($data[\'time\'] === NULL) {
$data[\'time\'] = 0;
}
$args = array( $data, $result_id, $content_id, $user_id );
return $args;
}
但是这些值没有被修改,有什么不对吗?