2011-09-29 13 views
6

Ho un cliente che necessita di un modulo di registrazione personalizzato.Modulo di registrazione personalizzato Wordpress

  • ho bisogno di fare un design personalizzato in questa pagina
  • ho bisogno di aggiungere campi personalizzati come Nome, Società, Telefono, ecc

Qualcuno mi può aiutare con questo?

risposta

11

Un posto migliore per chiedere domande su WordPress è probabilmente su WordPress Answers. Anyhoo, se si vuole risolvere questo senza plugin, avete bisogno di tre cose:

  1. Un custom WordPress theme
  2. Un Page Template
  3. Un WordPress Page che utilizza il modello di pagina

Quando si dispone di questi tre parti sul posto, è possibile effettuare le seguenti operazioni nel modello di pagina:

<?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; ?> 

Ora, quando si desidera recuperare le informazioni archiviate, è necessario sapere se le informazioni si trovano all'interno dell'oggetto Utente stesso o nei metadati. Per recuperare il nome e cognome (di un utente connesso):

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

Per recuperare il nome della società (di un utente connesso):

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

Questo è il succo di base di esso . Ci sono ancora molte cose che mancano qui, come la validazione, l'output di messaggi di errore, la gestione degli errori che si verificano all'interno dell'API di WordPress, ecc. Ci sono anche alcuni importanti TODO di cui devi occuparti prima che il codice funzioni. Probabilmente il codice dovrebbe essere diviso in diversi file, ma spero che questo sia sufficiente per iniziare.

Problemi correlati