web-dev-qa-db-ja.com

フロントエンド登録フォーム

私はWordPressサイトのフロントエンドにユーザー登録フォームを配置する簡単な方法を探しています。フロントエンドにログインフォームを配置するためにすでにwp_login_form()を使用しましたが、今度はサインアップフォームで同じことをする必要があります。

何か案は?

12
Pippin

フロントエンド登録、ログイン、パスワード回復についての素晴らしいチュートリアルをJeff Starrが書きました
[ - 。onetrickponyが提案した と同じようなアプローチをとる 。それで、これを彼の答えへのフォローアップとして、そしてあなたがそれを成し遂げるのを助けるかもしれない別のリソースとして取りなさい:
http://digwp.com/2010/12/login-register-password-code/ /

今、あなたはこれを自分でコーディングして私を信頼する方法の2つの例を持っています - 確かにこの(あなた自身の)方法でそれをする価値があります。それはそれほど難しいことではなく、それはあなたに 自由 柔軟性 および 再利用性 を与えることができないということです。

6
Michal Mau

あなたがこれを自分で処理したいのであれば、これが私が使うものです:

add_action('template_redirect', 'register_a_user');
function register_a_user(){
  if(isset($_GET['do']) && $_GET['do'] == 'register'):
    $errors = array();
    if(empty($_POST['user']) || empty($_POST['email'])) $errors[] = 'provide a user and email';
    if(!empty($_POST['spam'])) $errors[] = 'gtfo spammer';

    $user_login = esc_attr($_POST['user']);
    $user_email = esc_attr($_POST['email']);
    require_once(ABSPATH.WPINC.'/registration.php');

    $sanitized_user_login = sanitize_user($user_login);
    $user_email = apply_filters('user_registration_email', $user_email);

    if(!is_email($user_email)) $errors[] = 'invalid e-mail';
    elseif(email_exists($user_email)) $errors[] = 'this email is already registered, bla bla...';

    if(empty($sanitized_user_login) || !validate_username($user_login)) $errors[] = 'invalid user name';
    elseif(username_exists($sanitized_user_login)) $errors[] = 'user name already exists';

    if(empty($errors)):
      $user_pass = wp_generate_password();
      $user_id = wp_create_user($sanitized_user_login, $user_pass, $user_email);

      if(!$user_id):
        $errors[] = 'registration failed...';
      else:
        update_user_option($user_id, 'default_password_nag', true, true);
        wp_new_user_notification($user_id, $user_pass);
      endif;
    endif;

    if(!empty($errors)) define('REGISTRATION_ERROR', serialize($errors));
    else define('REGISTERED_A_USER', $user_email);
  endif;
}

このコードは、ユーザー登録ページのコードとほとんど同じです。

次にテンプレートにフォームを追加します。

<?php
  if(defined('REGISTRATION_ERROR'))
    foreach(unserialize(REGISTRATION_ERROR) as $error)
      echo "<div class=\"error\">{$error}</div>";
  // errors here, if any

  elseif(defined('REGISTERED_A_USER'))
    echo 'a email has been sent to '.REGISTERED_A_USER;
?>
<form method="post" action="<?php echo add_query_arg('do', 'register', home_url('/')); ?>">
  <label>
    User:
    <input type="text" name="user" value=""/>
  </label>

  <label>
    Email:
   <input type="text" name="email" value="" />
  </label>

  <label>
    Delete this text:
   <input type="text" name="spam" value="some_crappy_spam_protection" />
  </label>

  <input type="submit" value="register" />
</form>

あなたはどちらかこれを使ってウィジェットを作成することができます。

4
onetrickpony

重力フォームは、ワードプレス、IMOのための最高のお問い合わせフォームプラグインです。ベータ版の最新バージョンには、ユーザー登録アドオンがあります。試してみましたが、うまくいきました。それはあなたの費用がかかります...それは開発者ライセンスについては199ドルです。

料金ページ http://www.gravityforms.com/purchase-gravity-forms/ /

ユーザー登録アドオンについてのブログ記事 http://www.gravityhelp.com/ /

このプラグインをWordPressコミュニティに強くお勧めします。

詳細仕様:

ユーザー登録アドオンのいくつかの機能は次のとおりです。

  • ユーザー登録 - あなたのフォームフィールドをWordPressの利用可能なユーザー登録フィールドにマッピングすることによってユーザーを登録するためのフォームを設定します。
  • ユーザーメタ - バイオ、インスタントメッセージングID、ファーストネーム、ラストネーム、カスタムユーザーメタなどのユーザーメタデータをニーズに合わせて簡単に入力できます。
  • BuddyPress統合 - ユーザー登録プロセスの一環としてBuddyPressプロファイルフィールドデータを入力します。現在BuddyPress v1.2.6で動作します。
  • 支払いの統合 - ユーザー登録が行われる前に支払いを要求します。ペイパル購読のサポート、購読がキャンセルされた場合のユーザーロールの変更またはユーザーの削除が含まれます。
  • パスワードフィールド - ユーザー登録アドオンは、フォームで使用するために重力フォームにパスワードフィールドを追加します。 「パスワード」フィールドには、確認オプションと、パスワード強度チェックオプションが組み込まれています。
  • 投稿者 - ユーザー登録アドオンと投稿作成を1つのフォームに統合して、作成される投稿の作成者がアドオンによって登録されたユーザーになるようにします。
  • サイトの作成 - WordPressネットワーク(マルチサイト)インストール上に自動的にサイトを作成し、新しく作成されたユーザーをそのサイトの管理者として割り当てます。
2
Carson

Simplemodalログインプラグインを試してください。それは登録とログインを可能にし(あなたはユーザ登録を可能にしなければなりません)、そしてそれはそれにとても素敵な外観を持っています。

1
Lynne

登録フォームにもっと多くのフィールドが必要な場合は、 Profile Builderプラグインを使用できます

それはあなたがログイン用のフロントエンドフォームを追加することによってあなたのウェブサイトをカスタマイズすることを可能にし、ショートコードの使用を通してプロフィールを編集します。

テーマ私のログイン pluginを使用することができます

0
Tareq

これは私がこれをやった素敵で簡単な方法です:

現在のWordpress登録フォームからフィールド名と他のものをコピーします。あなたのカスタムフォームが隠されたものも含めて同じ名前のフィールドを持っていることを確認してから適切な登録URLを単にフォームのアクションに向けてください: http://www.yourblog.com/wp-login.php?action=register - あなたはそれが処理される方法が好きでないならば、あなたはそれから登録後にフォームがどのようにリダイレクトされるかを変更したいかもしれません。

あなたのサイトのページに登録フォーム、ログインフォーム、その他をドロップすることを可能にするInsite Loginと呼ばれるこのプラグインもあります: http://wordpress.org/extend/plugins/insitelogin/

最初の解決策はあなたがそれがやりたいことをやるべきです。

0