$wpbd->Insert()不插入用户数据

时间:2019-10-02 作者:AgustinContreras

使用“user\\u register”挂钩插入登录的用户数据时遇到问题。下面的代码在数据库中插入一行,但只插入“email”列。

function nuevoPostulante()
    {
        global $wpdb;
        $tablaPostulante = $wpdb->prefix . \'postulante\';
        $current_user = wp_get_current_user();
        $wpdb->insert(
            $tablaPostulante,
            array(
                \'dni\' => $current_user->user_login,
                \'nombre\' => $current_user->display_name,
                \'email\' => \'[email protected]\',
            )
        );
    }

    add_action(\'user_register\', \'nuevoPostulante\');
具有值的列​​从“$current\\u user”中获取的数据是empy,插入似乎不会从数组中获取数据。

我认为这是一个范围问题,我仍然不知道如何解决它。有人能帮我吗?非常感谢。

2 个回复
最合适的回答,由SO网友:Vantiya 整理而成

user\\u register操作允许您在新用户添加到数据库后立即访问其数据。用户id作为参数传递给hook。

因此,您希望在用户注册时为用户插入记录,您可以修改代码,如下所示:

add_action( \'user_register\', \'nuevoPostulante\', 10, 1 );
function nuevoPostulante( $user_id ) {
    global $wpdb;
    $tablaPostulante = $wpdb->prefix . \'postulante\';
    $current_user = get_user_by( \'ID\', $user_id ); // You can use get_userdata( $user_id ) instead of get_user_by() both can be work perfectly suite your requirement.
    $wpdb->insert(
        $tablaPostulante,
        array(
            \'dni\' => $current_user->user_login,
            \'nombre\' => $current_user->display_name,
            \'email\' => \'[email protected]\',
        )
    );
}

SO网友:Knut Sparhell

这可能是因为一个简单的事实,即当用户(可以)注册站点时,没有用户登录,因此从wp\\u get\\u current\\u user()返回的对象为空。

请尝试检查并使用$\\u POST数组中的值。

相关推荐

在WordPress中使用wpdb查询没有结果

除非我将字符串标题改为“Gocomma 10W QI无线快速充电器车载支架”,否则我不会得到任何结果。。。 $title1=\"Gocomma 10W QI Wireless Fast Charger Car Mount Holder - 2pcs (it)\"; $sql = $wpdb->prepare(\"SELECT * FROM $wpdb->posts WHERE post_title LIKE \'%%%s%%\' and post_statu