当用户注册时,我需要修改信息,然后再将其写入数据库。
我正在使用user_meta_pre_user_register 函数进行数学运算,将值从石头和磅更改为千克。在我的应用程序中,我总是以千克为单位存储重量,并在需要时将其转换为石头和石头。
如果我打印$userData 数组当用户注册时,它显示的是我所期望的,一个从stone转换为kg的数字(例如。[weight] => 65.77086) 但它并没有将这个值写入数据库。所有未修改的值都被正确写入。
我是否使用了正确的函数,是否缺少什么?
add_filter( \'user_meta_pre_user_register\', \'user_meta_pre_user_register_function\' );
function user_meta_pre_user_register_function( $userData ){
//If the weights units conditional is set kg save the value to \'weight\'
//If the weights units conditional is set stone, convert value to kg then save to \'weight\'
if($userData[\'weight_units\'] == \'kg\'){
$userData[\'weight\'] = $userData[\'weight_kg\'];
}else{
$userData[\'weight\'] = stone_to_kg($userData[\'weight_st\'], $userData[\'weight_lbs\']);
}
print_r($userData); //This is showing what I expect
return $userData;
}
SO网友:daveyb
我通过编辑插件文件解决了这个问题。不太理想,但当插件作者忽略你的电子邮件和论坛帖子时,我不得不这么做(我已经为专业版付费了…)。
在罕见的情况下,这可能会帮助其他人UserInsert.php 我添加了过滤器
$userData = apply_filters(\'user_meta_pre_user_register\', $userData);
之前
$this->userData = $userData;
$this->setMetaData();
当我意识到数据被发送到
setMetaData() 它太快了,还没有到达过滤器,所以没有添加额外的元字段。
为什么这个插件会出现这种情况,我不知道。。。。