Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

[SOLUCIONADO] Perzonalizar registrp

Estas en el tema de Perzonalizar registrp en el foro de WordPress en Foros del Web. Hola, básicamente lo que quiero es habilitar el registro en una página de wordpress, pero que dicho registro este disponible solo para los correos de ...
  #1 (permalink)  
Antiguo 21/03/2013, 19:48
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 2 meses
Puntos: 0
Perzonalizar registrp

Hola, básicamente lo que quiero es habilitar el registro en una página de wordpress, pero que dicho registro este disponible solo para los correos de un dominio específico, por ejemplo que solo se puedan registrar usuarios con correos de gmail.com

les dejo esta imagen para que tengan una idea más clara


He estado buscando solución a esto pero no he podido resolverlo, estaría muy agradecido que alguien pueda ayudarme.
  #2 (permalink)  
Antiguo 22/03/2013, 07:29
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años, 1 mes
Puntos: 656
Respuesta: Perzonalizar registrp

Seguro alguien que sepa bien de jQuery me tira de las orejas... pero acá va mi intento.

En functions.php colocá la siguiente llamada a nuestro script:

Código PHP:
Ver original
  1. function my_login_form() {
  2.     wp_enqueue_script( 'form', get_template_directory_uri() . '/scripts/form.js', false );
  3. }
  4. add_action( 'login_enqueue_scripts', 'my_login_form', 1 );

Eso llama al archivo sólo en el login form.

Ahora creá un archivo y nombralo form.js, colocalo dentro de una carpeta scripts en tu theme.

Dentro, colocá:

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.         $('#user_email').css('width', '105px');
  3.         $('#user_email').after('<input type="text" name="user_domain" id="user_domain" class="input" value="@gmail.com" size="5" disabled />');
  4.         $('#user_domain').css('width', '145px');
  5.         $('#user_email').focusout(function() {
  6.             $('#user_email').val(
  7.                 $('#user_email').val() + '@gmail.com'
  8.                 );
  9.             });
  10. });

El código lo que hace es darle un nuevo tamaño al input del email, añadirle uno al lado que es el que usaré para mostrar el @gmail.com pero sin darle uso alguno, y luego de escribir el usuario el mail añade automaticamente el @gmail.com para que al ser enviado el formulario la dirección sea reconocida bien.

No es bonito, seguramente no es lo ideal, pero salva las papas

__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #3 (permalink)  
Antiguo 22/03/2013, 09:20
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Respuesta: Perzonalizar registrp

De todas maneras hay que hacer una validación usando php, pues puede que venga cualquier usuario con cierto grado de pillantería, y salte por encima del código JS
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #4 (permalink)  
Antiguo 22/03/2013, 09:41
Avatar de Nekko
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Buenos Aires
Mensajes: 3.141
Antigüedad: 16 años, 1 mes
Puntos: 656
Respuesta: Perzonalizar registrp

Es verdad... Hay una solución interesante que publicaron en WordPress Answers y consiste en añadir una "lista blanca" a la validación del registro. Es muy simple de entender:

Código PHP:
Ver original
  1. function is_valid_email_domain($login, $email, $errors ){
  2.     $valid_email_domains = array("gmail.com","yahoo.com");// whitelist
  3.     $valid = false;
  4.     foreach( $valid_email_domains as $d ){
  5.         $d_length = strlen( $d );
  6.         $current_email_domain = strtolower( substr( $email, -($d_length), $d_length));
  7.         if( $current_email_domain == strtolower($d) ){
  8.             $valid = true;
  9.             break;
  10.         }
  11.     }
  12.     // if invalid, return error
  13.     if( $valid === false ){
  14.         $errors->add('domain_whitelist_error',__( '<strong>ERROR</strong>: you can only register using gmail or yahoo emails' ));
  15.     }
  16. }
  17.  
  18. add_action('register_post', 'is_valid_email_domain',10,3 );

También dejan recomendado el plugin User domain whitelist
__________________
Taller para crear themes wordpress desde cero | Presupuestos para trabajos particulares vía MP
  #5 (permalink)  
Antiguo 22/03/2013, 20:19
 
Fecha de Ingreso: enero-2013
Mensajes: 17
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Perzonalizar registrp

Gracias por sus respuestas amigos, intente de la primera forma para lograr modificar el formulario y no logré hacerlo funcionar, me hubiese gustado más de esa forma porque se ve mucho más elegante y profesional.

Pero como opción muy buena el plugin que me sugeriste, User domain whitelist es bastante practico y se adapta muy bien a lo que necesito básicamente aunque sin el aspecto visual, creo que debe ser posible pero habrá que estudiar un poco más.

Gracias sinceramente por la ayuda.
  #6 (permalink)  
Antiguo 23/03/2013, 03:36
Avatar de hasdpk  
Fecha de Ingreso: agosto-2011
Ubicación: $spain->city( 'Arucas' );
Mensajes: 1.800
Antigüedad: 12 años, 7 meses
Puntos: 297
Respuesta: Perzonalizar registrp

Existen unos Filters que se llama "login_form_middle", que he intentando usar para documentar un poco este comentario y no me ha funcionado o lo he usado mal (me resulta raro).

De todos modos en el foro oficial de Wordpress se ha hablado de los mismo y te dejo una posible solución que es usando wp_login_form().
__________________
Freelance Developer — www.rubenmartin.me PHP, SQL, Wordpress, Prestashop, Codeigniter, Laravel
RegaloConsolas — www.regaloconsolas.com Sorteo juegos, consolas y accesorios

Etiquetas: personalizar, registro
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:16.