使用USER_META_PRE_USER_REGISTER修改用户Meta Pro中的元密钥不起作用

时间:2017-11-22 作者:daveyb

当用户注册时,我需要修改信息,然后再将其写入数据库。

我正在使用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;
}

1 个回复
SO网友:daveyb

我通过编辑插件文件解决了这个问题。不太理想,但当插件作者忽略你的电子邮件和论坛帖子时,我不得不这么做(我已经为专业版付费了…)。

在罕见的情况下,这可能会帮助其他人UserInsert.php 我添加了过滤器

$userData = apply_filters(\'user_meta_pre_user_register\', $userData);
之前

$this->userData = $userData;        
$this->setMetaData();
当我意识到数据被发送到setMetaData() 它太快了,还没有到达过滤器,所以没有添加额外的元字段。

为什么这个插件会出现这种情况,我不知道。。。。

结束

相关推荐

Virtual Pages plugins

我很难让插件正常工作Virtual Pages (WordPress插件可简化虚拟页面的创建)我确实进行了编辑,根据查询创建了一个循环。add_action( \'gm_virtual_pages\', function( $controller ) { /* Creating virtuals pages for companies */ $args = array( \'post_type\' => array(\'companies\',), \'post_status\'