如何获取注册的新用户的USER_META值?

时间:2015-11-21 作者:Momin

我们有一个定制的注册流程。用户自行注册。当用户注册时,会根据$user_id. 现在我们需要发送一封电子邮件。

我们使用了名为user_register 发送电子邮件。当用户注册时,将向该用户发送一封电子邮件。问题是,即使我将钩子的优先级设置为100,也没有发送meta值。

如何使用user_register 钩子,这样我就可以在电子邮件中发送他们?

这是注册码:

add_action( \'user_register\', \'sendMailM\', 99999, 1 );
function sendMailM( $user_id ) { 
    $title  = "Title";
    $from   = "noreply@admin.no";

    global $wpdb, 
        $password;

    $user       = new WP_User( $user_id );
    $user_login = stripslashes( $user->user_login );
    $user_email = stripslashes( $user->user_email );
    $companyCreatedUserP4 = get_user_meta( $user_id, \'companyId\', true );

    if( ! empty( $companyCreatedUserP4 ) )
    {
        $current_companyP4  = new WP_User( $companyCreatedUserP4 );
        $companyEmailP4     = $current_companyP4->user_email;
        $messageAdmin       = \'New User \' . $user_login . \' is registered on your site under \' . $current_companyP4->user_firstname . \' company.\';
        $messageCompanyP4   = \'A new user with a user name: \' . $user_login . \' was registered under your company.\';
    }
    else
    {
        $messageAdmin = \'New User \' . $user_login . \' is registered on your site.\'; 
    }

    $message  = "<p>You are now registered . Your user name and password are included in this email. </p>";
    $message .= "<p>" . sprintf( __( \'Username: %s\' ), $user_login ) . "\\r\\n\\r\\n</p>";
    $message .= "<p>" . sprintf( __( \'Password: %s\' ), $passwor d) . "\\r\\n</p>";

    $headers = \'From: \' . $title . \'<\' . $from . ">\\r\\nReply-To: " . $from;
    add_filter( \'wp_mail_content_type\', create_function( \'\', \'return "text/html";\' ) );
    wp_mail( get_option( \'admin_email\' ), \'New User Registration \', $messageAdmin, $headers );  /*admin*/

    if( ! empty( $companyEmailP4 ) )
        wp_mail( $companyEmailP4, \'New User Registration \', $messageCompanyP4, $headers );      /*user*/
}
这是创建新用户和更新元值的代码:

$user = wp_insert_user( $userdata );
update_user_meta( $user, \'companyId\', 350 );

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

读取的反抄本条目user_register action, 上面写着:

触发此操作时,并非所有用户元数据都存储在数据库中。

请注意,执行以下操作:

$user = wp_insert_user( $userdata );
update_user_meta( $user, \'companyId\', 350 );
按照以下顺序:插入用户->运行user_register 操作->运行更新用户元函数。因此,您的自定义用户元在中不可用user_register 行动

因此,在wp_insert_user(), 你可以在user_register 措施:

add_action( \'user_register\', \'sendMailM\' );
function sendMailM( $user_id ) {

    // Note: $_POST data is available here,
    // just in case you need to update user meta based on form input,
    // for example, $_POST[\'companyId\']
    update_user_meta( $user_id, \'companyId\', 350 );

    $title  = "Title";
    $from   = "noreply@admin.no";

    global $wpdb, 
        $password;

    $user       = new WP_User( $user_id );
    $user_login = stripslashes( $user->user_login );
    $user_email = stripslashes( $user->user_email );
    // You can now access to previously updated user meta
    // Or get the companyId directly from $_POST input if needed
    $companyCreatedUserP4 = get_user_meta( $user_id, \'companyId\', true );

    if( ! empty( $companyCreatedUserP4 ) )
    {
        $current_companyP4  = new WP_User( $companyCreatedUserP4 );
        $companyEmailP4     = $current_companyP4->user_email;
        $messageAdmin       = \'New User \' . $user_login . \' is registered on your site under \' . $current_companyP4->user_firstname . \' company.\';
        $messageCompanyP4   = \'A new user with a user name: \' . $user_login . \' was registered under your company.\';
    }
    else
    {
        $messageAdmin = \'New User \' . $user_login . \' is registered on your site.\'; 
    }

    $message  = "<p>You are now registered . Your user name and password are included in this email. </p>";
    $message .= "<p>" . sprintf( __( \'Username: %s\' ), $user_login ) . "\\r\\n\\r\\n</p>";
    $message .= "<p>" . sprintf( __( \'Password: %s\' ), $passwor d) . "\\r\\n</p>";

    $headers = \'From: \' . $title . \'<\' . $from . ">\\r\\nReply-To: " . $from;
    add_filter( \'wp_mail_content_type\', create_function( \'\', \'return "text/html";\' ) );
    wp_mail( get_option( \'admin_email\' ), \'New User Registration \', $messageAdmin, $headers );  /*admin*/

    if( ! empty( $companyEmailP4 ) )
        wp_mail( $companyEmailP4, \'New User Registration \', $messageCompanyP4, $headers );      /*user*/
}

相关推荐