2011-09-29 19 views
6

私はカスタム登録フォームを必要とするクライアントを持っています。Wordpressカスタム登録フォーム

  • 私は

など、私が最初に名前、会社、電話番号などのカスタムフィールドを追加する必要があり、このページ上のカスタム設計
  • をする必要がある誰かがこれで私を助けることができますか?

  • 答えて

    11

    WordPressの質問にお答えするには、おそらくWordPress Answersです。

    1. custom WordPress theme
    2. Page Template
    3. あなたはこれらの3を持っている場合ページテンプレート

    を使用していますWordPress Page:あなたは、プラグインなしでこれを解決したい場合はAnyhoo、次の3つのものが必要あなたのページテンプレートで次のことを行うことができます:

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

    これで、保存したものを取得するときに、その情報がUserオブジェクト内かメタデータ内かを知る必要があります。 (ログインしているユーザーの)最初と最後の名前を取得するには:

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

    (ログインしているユーザーの)会社名を取得するには:

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

    それの基本的な要点だこと。検証、エラーメッセージの出力、WordPress API内で発生したエラーの処理など、ここにはまだ欠けているものがたくさんあります。また、コードが機能する前に世話をしなければならない重要なTODOもあります。コードはおそらく複数のファイルに分割する必要がありますが、これで十分です。