function registrar_usuario($parametros)
{
    $errors = new WP_Error();
    if ($parametros['email'] == NULL) {
        $errors->add('empty_email', __('<strong>ERROR</strong>: Please type your e-mail address.'));
        return $errors;
    }
    if (!es_email($parametros['email'])) {
        $errors->add('invalid_email', __('<strong>ERROR</strong>: The email address isn&#8217;t correct.'));
        return $errors;
    }
    if (email_exists($parametros['email'])) {
        $errors->add('email_exists', __('<strong>ERROR</strong>: This email is already registered, please choose another one.'));
        return $errors;
    }
    if ($parametros['nombre'] == NULL) {
        $errors->add('empty_username', __('<strong>ERROR</strong>: Please enter a username.'));
        return $errors;
    }
    $user_pass = $parametros['clave'] == NULL ? wp_generate_password(12, false) : $parametros['clave'];
    $user_id = wp_create_user($parametros['email'], $user_pass, $parametros['email']);
    if (!$user_id) {
        $errors->add('registerfail', sprintf(__('<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a href="mailto:%s">webmaster</a> !'), get_option('admin_email')));
        return $errors;
    }
    update_user_option($user_id, 'default_password_nag', true, true);
    //Set up the Password change nag.
    wp_new_user_notification($user_id, $user_pass);
    // Actualización de tabla clientes...
    return $user_id;
}
function registrar_usuario($parametros)
{
    $errors = new WP_Error();
    if ($parametros['email'] == NULL) {
        $errors->add('empty_email', __('<strong>ERROR</strong>: Please type your e-mail address.'));
        //return $errors;
    }
    if (!es_email($parametros['email'])) {
        $errors->add('invalid_email', __('<strong>ERROR</strong>: The email address isn&#8217;t correct.'));
        //return $errors;
    }
    if (email_exists($parametros['email'])) {
        $errors->add('email_exists', __('<strong>ERROR</strong>: This email is already registered, please choose another one.'));
        //return $errors;
    }
    if ($parametros['nombre'] == NULL) {
        $errors->add('empty_username', __('<strong>ERROR</strong>: Please enter a username.'));
        //return $errors;
    }
    if ($parametros['empresa'] == NULL) {
        $errors->add('empty_empresa', '<strong>ERROR</strong>: Por favor introduce una empresa.');
    }
    if ($errors->get_error_code()) {
        return $errors;
    }
    $user_pass = $parametros['clave'] == NULL ? wp_generate_password(12, false) : $parametros['clave'];
    $user_id = wp_create_user($parametros['nombre'], $user_pass, $parametros['email']);
    if (!$user_id) {
        $errors->add('registerfail', sprintf(__('<strong>ERROR</strong>: Couldn&#8217;t register you... please contact the <a href="mailto:%s">webmaster</a> !'), get_option('admin_email')));
        return $errors;
    }
    update_user_option($user_id, 'default_password_nag', true, true);
    //Set up the Password change nag.
    wp_new_user_notification($user_id, $user_pass);
    //actualizo la empresa
    global $wpdb;
    $sql = "update wp_users set empresa = '" . $parametros['empresa'] . "' where ID = '" . $user_id . "'";
    $result = $wpdb->query($sql);
    if ($result === false) {
        $errors->add('empty_empresa', '<strong>ERROR</strong>: No se ha asignado la empresa.');
    }
    return $user_id;
}
function ver($campo, $alias, $tipo, $patron = "", $extra = 0)
{
    global $_POST, $_GET;
    // No vacío
    if ($tipo & 1) {
        if (!isset($_POST[$campo]) || $_POST[$campo] == "") {
            err($campo, "El campo {$alias} no puede estar vacio");
        }
    }
    // Alfanumerico general
    if ($tipo & 2) {
        if (isset($_POST[$campo]) && $_POST[$campo] != "" && !preg_match("/^[a-zA-Z0-9áéíóúñ \\\\'\\\"\\/\\.\\,\\_\\-\\(\\)]+\$/i", $_POST[$campo])) {
            err($campo, "{$alias} debe de ser texto");
        }
    }
    // Numerico general
    if ($tipo & 4) {
        if (isset($_POST[$campo]) && $_POST[$campo] != "" && !preg_match("/^[0-9]+\$/", $_POST[$campo])) {
            err($campo, "{$alias} debe de ser numérico");
        }
    }
    // Fecha
    if ($tipo & 8) {
        if (isset($_POST[$campo]) && $_POST[$campo] != "") {
            $partes = explode("-", $_POST[$campo]);
            if ($partes[0] > 2015 || $partes[0] < 1700 || !checkdate($partes[1], $partes[2], $partes[0])) {
                err($campo, "{$alias} tiene que ser una fecha valida. Favor de verificarla");
            }
        }
    }
    // Email (depende de funcion externa)
    if ($tipo & 16) {
        if (isset($_POST[$campo]) && $_POST[$campo] != "" && !es_email($_POST[$campo])) {
            err($campo, "El campo {$alias} debe de ser una dirección de correo valida en la forma de nombre@dominio.extensión");
        }
    }
    // Regex Avanzado
    if ($tipo & 32) {
        if (isset($_POST[$campo]) && $_POST[$campo] != "" && !@preg_match($patron, $_POST[$campo])) {
            err($campo, "{$alias} no parece tener un formato valido");
        }
    }
    // Opciones diferente a valor "extra"
    if ($tipo & 64) {
        if (isset($_POST[$campo]) && $_POST[$campo] === $extra) {
            err($campo, "El campo {$alias} debe de tener seleccionada una opción valida");
        }
    }
    // Repetido
    if ($tipo & 128) {
        if ($extra == true) {
            err($campo, "El valor del campo {$alias} no puede ser usado debido a que actualmente se encuentra en uso");
        }
    }
    // URL
    if ($tipo & 256) {
        if (isset($_POST[$campo]) && $_POST[$campo] != "") {
            $_POST[$campo] = preg_match("/^(http|ftp)(s)?/i", $_POST[$campo]) ? $_POST[$campo] : "http://" . $_POST[$campo];
            if (!verifurl($_POST[$campo], $extra)) {
                err($campo, "El campo {$alias} debe de ser una dirección web valida");
            }
        }
    }
    return true;
}