Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Registro de usuarios en WordPress sin plugin mediante formulario: código mejorado

Imago voragine.net
[actualizado el ]

Hace tiempo publicábamos cómo crear un formulario de registro de usuarios en WordPress, para permitir que nuevos usuarios se den de alta en nuestra web sin necesidad de pasar por el gestor. Publicamos ahora el código mejorado, más organizado y con alguna funcionalidad extra: se incluye el código para notificar por correo al administrador de la página el registro del nuevo usuario, y el envío también por correo de los datos de inicio de sesión al usuario. También se incluye la manera de rellenar campos personalizados del perfil, que hemos tenido que crear previamente.

El nuevo método es el mismo que utilizamos para permitir que un usuario inicie sesión y la abandone mediante un formulario:

  • Alojar en un archivo el formulario de registro, por ejemplo en user-forms.php
  • Insertar en otro archivo las acción para registrarse, por ejemplo, en user.php. Este paso no es extrictamente necesario, pero hace que tengamos todo el código relativo a gestión de usuarios controlado en el mismo archivo, cuestión de orden. De esta manera podemos tener las acciones de registro, inicio y abandono de sesión en un mismo archivo, que podemos llamar cuando lo necesitemos.
  • Llamar al archivo user.php desde el archivo header.php para que así las acciones se ejecuten antes de cargar las cabeceras de la página y podamos redirigir convenientemente a la URL que queramos, y llamar al archivo user-forms.php desde el lugar en el que deseemos que aparezcan los formularios.

Formulario, user-forms.php

Acciones para registrarse, user.php

Para poner en marcha el sistema de registro basta incluir el archivo con el formulario en la plantilla que queramos que aparezca, y llamar al archivo user.php en el header.php mediante un include.

33 comentarios

    • Por Luis

    Hola amigo, todo se ve bien, pero al ultimo no entendi lo de llamar al archivo con una funcion mediante include..

    Me puedes ayudar con eso?

    1. Para incluir un archivo PHP en otro basta recurrir a la orden include. Tienes información de cómo funciona en php.net.

    • Por Kenny

    Superior info concerning WordPress 3.4.2. Thanks so much for
    posting.

    • Por jose •

    Buenas,

    Es la primera vez que comento, pero llevo tiempo siguiendo el blog y usando vuestros recursos. Enhorabuena por el trabajo y gracias, porque sin páginas como la vuestra mucha gente que se inicia estaríamos perdidos.

    Una vez dicho esto, os hago mi consulta. Estoy usando vuestro código para crear un formulario de registro en una web con la que ando. El tema es que he añadido el user.php al header con un include y el user-forms.php a la plantilla de la página que pretendo usar para que la gente se registre. Al crear ambos php (user y user-forms) ya me parece sospechoso que en Dremweaver me salga todo el código en negro (como si faltara alguna etiqueta). Cuando lo subo todo, el resultado es que me sale todo el codigo directamente en pantalla. He probado a añadir las etiquetas php dentro de cada archivo, pero empiezan a aparecerme errores. He intentado solucionar los errores cambiando algunas comillas dobles por simples, pero sin resultado. (Aparentemente el archivo ya no da errores en dremweaver pero ni rastro del formulario en pantalla)

    Pido disculpas por adelantado porque estoy seguro que es algo rídiculo.

    1. Hola jose, nos alegramos de que encuentres voragine.net útil, gracias.

      Para que el PHP sea interpretado como tal tienes que añadir al principio el siguiente código <?php y al final ?>, supongo que a eso te refieres con las etiquetas PHP. Que te salgan errores significa que el código está siendo interpretado como PHP.

      Llegados a este punto, queda resolver los errores que vayas encontrando. Revisando el código que publiqué veo que hay varias comillas dobles que deberían ser sencillas, sí.

      El archivo que contiene el formulario de registro no realiza el output. Para que se vea en pantalla tienes que hacer un echo de la variable que contiene el form. Añade un echo $signup_form donde quieras que aparezca.

        • Por Jose •

        Buenas tardes,

        Finalmente usé un plugin para el registro y manejo de usuarios (WP-Members), porque no me dí cuenta de la respuesta :(. Me dejo anotada la solución para la siguiente revisión de la web, porque le he cogido cierta manía a eso de usar plugins con wordpress. Soy más de pegarme cabezazos por las esquinas hasta dar con la solución ;)
        Muchas gracias de cualquier forma!

    • Por Juan Carlos •

    Hola.
    Ciertamente es un sitio interesante, pero con este tipo de letra es prácticamente ilegible.

    Muchas gracias por tu atención.

    1. Gracias por el feedback, Juan Carlos. No eres el primero que nos lo dice. Tenemos pendiente el cambio de tipo en los cuerpos pequeños.

    • Por Manu •

    Estimado gracias por su ayuda con esta pagina…sirve de mucho!! estaba por usar tu formulario de registro , pero me arroja este error al momento de la carga

    Parse error: parse error in C:\xampp\htdocs\wordpress\wp-content\themes\Cleanmag\user.php on line 74

    que corresponde a este codigo
    $success_msg = “You have sign up successfully. In order to submit any content, first of all you must log in using the form underneath.“;

    me podiras ayduar por que me arroja el error

    Gracias

    1. Hola Manu, me alegro que te sea útil.

      El error se produce por las comillas dobles que no están en el formato correcto.

      Si estás usando un teclado español, tienes que usar las que salen al teclear SHIFT+2, no otras.

    • Por nahuel •

    hola muy bueno todo tengo una duda ese código se puede usar en blogger o es solamente en word press
    si fuese que se utiliza para ambas podrian decirme como lo ubico en blogger

    1. Hola nahuel,

      no, este código es para WordPress. No vale para blogger.

    • Por nahuel •

    no existe uno para blogger se lo agradecería mucho!!!!!

    1. No conozco mucho blogger, pero este tutorial cuenta cómo programar un sistema de registro de usuarios de cero, podríamos decir, para WordPress.

      Creo que para blogger debe existir algún sistema que permita que los usuarios se registren en tu página, mediante algún módulo, plugin o similar.

      Pero ya te digo que no conozco lo suficiente blogger como para poder ayudarte.

    • Por Jose •

    Hola. He visto tu artículo, pero estoy un poco confuso. La verdad es que soy nuevo en esto de WordPress, y me gustaría mucho poder crear un plugin de acceso/registro de usuarios, ya que los que he visto o no funcionan bien, o están con todos los textos en inglés, o no tienen formularios personalizables, o les faltan prestaciones.

    Todos los archivos que mencionas en tu artículo ¿donde deben colocarse? ¿Cómo haríamos para incluir, como tiene algunas webs, la posibilidad de logearse con la cuenta de FB o de twitter? ¿Existe algún plugin que cumpla estas funciones? Yo he probado el Pie, el register plus redux, el sidebar, y no se cuantas cosas más y ninguno me ofrece esto.

    Si me orientas un poco, no sabes como te lo agradeceré.

    1. Hola Jose,

      todos los archivos de los que hablo en el artículo han de colocarse en la carpeta del theme que vayas a usar.

      Por otro lado, para registro con facebook, twitter y g+, puedes usar el plugin WordPress Social Login.

    • Por eliezer •

    Hola, me gusta mucho lo que han hecho solo 2 preguntas

    1) como es la linea del include user.php
    2) como hago para generar un reporte con los datos que les pido a los usuarios y asi imprimirlo

    se podra?

  1. Hola eliezer,

    si quieres saber cómo usar la directiva include de PHP, puedes revisar el manual de php.net: php.net/manual/en/function.include.php. Básicamente lo que hace es incluir el contenido de un fichero PHP en otro. La sintaxis es sencilla: include “file.php”;

    En cuanto al reporte, dependerá de cómo trates y dónde almacenes los datos. Para responderte necesitaría algún detalle más.

    • Por Jose

    Hola skotperez muy interesante el contenido de tu blog, me gustaria consultarte si es posible crear 3 formularios de registro que apunten a la misma base de datos de un sitio con buddypress, basicamente para categorizar 3 niveles de usuarios diferentes bien estructurados, profesionales, empresas y (visitantes normales o suscriptores) probe varios plugins y no consigo dar con lo que necesito, quisiera que cada formulario de registro apunte a una direccion url diferente para realizar publicidades especificas de cada categoria, por ejemplo una pagina donde publique los beneficios que podran optenes los profesionales que se suscriban a mi red donde incluiria el enlace al formulario de suscripcion para profesionales http://www.concienciafitnes.com/blog/profesionales y lo mismo para las demas categorias

    desde ya gracias por tu tiempo

    1. Hola Jose,

      puedes crear tres páginas en las que incluyas el mismo formulario, y el contenido específico que consideres. La diferencia vendrá a la hora de insertar el usuario en la base de datos: lo que tienes que cambiar en cada caso es el parámetro role de la función wp_insert_user: 'role' => 'contributor', la que aparece en la línea 63 del bloque de código Acciones para registrarse.

      Consulta también los roles disponibles en WordPress.

    • Por María

    Hola, he probado tus códigos, que me parecen geniales, pero ahora he perdido mi página.
    Primero me daba una tabla con una serie de errores que he inentado corregir y lugo me sale este texto:

    /** * Front to the WordPress application. This file doesn’t do anything, but loads * wp-blog-header.php which does and tells WordPress to load the theme. * * @package WordPress */ /** * Tells WordPress to load the WordPress theme and output it. * * @var bool */ define(‘WP_USE_THEMES’, true); /** Loads the WordPress Environment and Template */ require( dirname( __FILE__ ) . ‘/wp-blog-header.php’ );

    Estoy perdida…. tengo una copia de seguridad que he hecho con XCloner pero tampoco sé como restaurarla….
    Me encantaría poder poner tu formulario, pero si es mucho pedir, al menos, por favor, podrías ayudarme a recuperar la página….
    Gracias y un saludo, María

    • Por María

    Hola
    Ayer escribí un comentario que hoy ya no encuentro.
    Al instalar tu modelo de formulario me daba unos errores y al tratar de corregirlos perdí el acceso a la página. La he recuperado sacando los archivos del formulario de la plantilla (Cubby en wordpress) y sustituyendo los archivos que modifiqué por los originales que tengo en otro disco.
    Ahora vuelve a funcionar, pero me encantaría porder incluri tu formulario porque me parece muy bien estructurado.
    ¿podrías ayudarme con esto?
    Gracias, María.

    • Por María

    Hola de nuevo…

    Este es el tercer comentario que te envío y no sé dónde van porque no los veo.
    Lo he vuelto a intentar y, al menos, no he perdido la página pero lo que me hace es que me saca en la portada de la página todo el código escrito en el archivo user.php
    No sale un formulario, como era de esperar, sino que incluye literalmente el código del archivo.
    Por favor…. échame una manita con esto…..
    Gracias, María.
    Y perdona mi insitencia.

  2. Hola María, me alegro de que pudieses recuperar tu página.

    A ver si puedo ayudarte: ¿Desde qué archivo estás llamando al archivo user.php? Tienes que llamarlo desde el archivo header.php del theme que estés usando.

    • Por Irudha •

    Hola,

    ¿Podrías poner ejemplos, en líneas de código, si es posible, para aquellos que no manejamos programación? Dices que hay que ponerlo en tal carpeta y llamarlo desde tal archivo; sí, eso se entiende, ¿pero en qué lugar, exactamente, qué línea, después de qué, en qué etiqueta? Algo más completo, y no dejarlo al aire, gracias, de ante mano.

    1. Hola Irudha,

      el archivo user.php lo puedes incluir al principio del archivo header.php. El formulario… depende de dónde lo quieras mostrar. No puedo ser más específico porque cada archivo de cada theme es diferente.

      Aunque si no sabes nada de programación te recomiendo que uses un plugin ya preparado para incluir el formulario de registro en tu wordpress.

    • Por Gabi •

    Me podrian explicar como hago visible el formulario?

    ” incluir el archivo con el formulario en la plantilla que queramos que aparezca, y llamar al archivo user.php en el header.php mediante un include.”

    no logro entender como lo hacen publico y donde lo incluyen oara que sea accesible.

    1. Hola Gabri,

      para llamar a un archivo desde otro se puede utilizar la orden include de la siguiente manera:

      include "archivo.php"

  3. No se si vio mi comentario anterior porque no lo veo ingresado. Respondame por favor si no lo vio para volver a formularlo

    1. Hola Alejandro, no veo ningún otro comentario tuyo.

  4. Hola y gracias por la atencion.
    Despues de corregir la doble comilla en la la linea 74 del codigo en user.php e ingresar el include “user.php” con doble y con simple comillas que es como explican en php.net en header, sigo sin ver el formulario.
    Inclui user.php y user-forms.php en la carpeta de mi tema con la copia fiel del codigo que pone en este tutorial, sin modificar ningun otro archivo de ninguna otra carpeta y sigo, como les dije sin ver nada.
    Este es el codigo de mi header y casi al final esta agregado el incluide:

    <?php
    /**
    * The Header for our theme.
    *
    * Displays all of the section and everything up until id=”main-core”.
    *
    * @package ThinkUpThemes
    */
    ?>

    <html >

    <meta charset="” />

    <link rel="pingback" href="” />

    <script src="/lib/scripts/html5.js” type=”text/javascript”>

    <body >

    <img src="” width=”width ); ?>” height=”height ); ?>” alt=””>

    ‘header-links’, ‘container_id’ => ‘pre-header-links-inner’, ‘theme_location’ => ‘pre_header_menu’ ) ); ?>

    false, ‘theme_location’ => ‘header_menu’, ‘walker’ => new thinkup_menudescription() ) ); ?>

    Espero su respuesta. Gracias

  5. ESTE ES EL header.php COMPLETO QUE NO LO CARGO COMPLETO ANTES

    <?php
    /**
    * The Header for our theme.
    *
    * Displays all of the section and everything up until id=”main-core”.
    *
    * @package ThinkUpThemes
    */
    ?>

    <html >

    <meta charset="” />

    <link rel="pingback" href="” />

    <script src="/lib/scripts/html5.js” type=”text/javascript”>

    <body >

    <img src="” width=”width ); ?>” height=”height ); ?>” alt=””>

    ‘header-links’, ‘container_id’ => ‘pre-header-links-inner’, ‘theme_location’ => ‘pre_header_menu’ ) ); ?>

    false, ‘theme_location’ => ‘header_menu’, ‘walker’ => new thinkup_menudescription() ) ); ?>

    1. Hola Alejandro,

      para ver el formulario tienes que llamar al archivo user-form.php desde la plantilla de la página en la que quieras que aparezca. Por ejemplo si quieres que aparezca en las páginas lo llamaras desde page.php.

Dejar un comentario

*
*

 

No hay trackbacks