2011-09-29 18 views
6

Tengo un cliente que necesita un formulario de registro personalizado.Formulario de registro personalizado de Wordpress

  • Necesito hacer un diseño personalizado en esta página
  • tengo que añadir campos personalizados como nombre, ubicación, teléfono, etc.

Alguien me puede ayudar con esto?

Respuesta

11

Un mejor lugar para hacer preguntas de WordPress es probablemente en WordPress Answers. Anyhoo, si se quiere resolver esto sin plugins, se necesitan tres cosas:

  1. Un custom WordPress theme
  2. Un Page Template
  3. Un WordPress Page que usa la plantilla de página

Cuando usted tiene estos tres partes en su lugar, puede hacer lo siguiente en su plantilla de página:

<?php 
/* 
Template Name: Registration 
*/ 

global $current_user; 
get_currentuserinfo(); 

$firstname = $_POST['firstname']; 
$lastname = $_POST['lastname']; 
$company = $_POST['company']; 

if (($firstname != '') && ($lastname != '') && ($company != '')) { 
    // TODO: Do more rigorous validation on the submitted data 

    // TODO: Generate a better login (or ask the user for it) 
    $login = $firstname . $lastname; 

    // TODO: Generate a better password (or ask the user for it) 
    $password = '123'; 

    // TODO: Ask the user for an e-mail address 
    $email = '[email protected]'; 

    // Create the WordPress User object with the basic required information 
    $user_id = wp_create_user($login, $password, $email); 

    if (!$user_id || is_wp_error($user_id)) { 
     // TODO: Display an error message and don't proceed. 
    } 

    $userinfo = array(
     'ID' => $user_id, 
     'first_name' => $firstname, 
     'last_name' => $lastname, 
    ); 

    // Update the WordPress User object with first and last name. 
    wp_update_user($userinfo); 

    // Add the company as user metadata 
    update_usermeta($user_id, 'company', $company); 
} 

if (is_user_logged_in()) : ?> 

    <p>You're already logged in and have no need to create a user profile.</p> 

<?php else : while (have_posts()) : the_post(); ?> 

<div id="page-<?php the_ID(); ?>"> 
    <h2><?php the_title(); ?></h2> 

    <div class="content"> 
     <?php the_content() ?> 
    </div> 

    <form action="<?php echo $_SERVER['REQUEST_URI'] ?>" method="post"> 
     <div class="firstname"> 
      <label for="firstname">First name:</label> 
      <input name="firstname" 
        id="firstname" 
        value="<?php echo esc_attr($firstname) ?>"> 
     </div> 
     <div class="lastname"> 
      <label for="lastname">Last name:</label> 
      <input name="lastname" 
        id="lastname" 
        value="<?php echo esc_attr($lastname) ?>"> 
     </div> 
     <div class="company"> 
      <label for="company">Company:</label> 
      <input name="company" 
        id="company" 
        value="<?php echo esc_attr($company) ?>"> 
     </div> 
    </form> 
</div> 

<?php endwhile; endif; ?> 

Ahora, cuando desea recuperar las cosas que ha almacenado, necesita saber si la información está dentro del objeto Usuario o en metadatos. Para recuperar el nombre y apellido (de un usuario conectado):

global $current_user; 
$firstname = $current_user->first_name; 
$lastname = $current_user->last_name; 

Para recuperar el nombre de la empresa (de un usuario conectado):

global $current_user; 
$company = get_usermeta($current_user->id, 'company'); 

Esa es la esencia básica de ella . Todavía faltan muchas cosas aquí, como la validación, la salida de mensajes de error, el manejo de errores que ocurren en la API de WordPress, etc. También hay TODOs importantes de los que debe encargarse antes de que el código funcione. El código probablemente también deba dividirse en varios archivos, pero espero que esto sea suficiente para comenzar.

Cuestiones relacionadas