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


13

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

何か案は?


申し訳ありませんが、「フロントエンド」とはどういう意味ですか。フロントエンドとバックエンドの意味は理解できていると思いますが、フロントエンド以外の場所にフォームを配置する方法はわかりません。フロントページを意味しますか?
マッドスキャーン14年

回答:


7

Jeff Starrは、onetrickponyによって提案され
たのと同様のアプローチをとって、フロントエンドの登録、ログイン、およびパスワードの回復に関する優れたチュートリアルを作成しました。したがって、これを彼の答えのフォローアップとして、またあなたがそれを成し遂げるのを助けるかもしれない別のリソースとしてとってください:http :
//digwp.com/2010/12/login-register-password-code/

これを自分でコーディングして私を信頼する方法の2つの例があります。この(あなた自身の)方法で行う価値は間違いありません。それほど難しくはなく、プラグインでは提供できない自由柔軟性再利用性を提供します。


4

あなたがこれを自分で処理したい場合、ここで私が使用するものです:

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>

これ、ショートコード、または通常のページテンプレートでウィジェットを作成できます...


素晴らしく見えますが、うまくいかないようでした。しかし、うまく機能するプラグインを見つけたので、助けてくれてありがとう。
ピピン

私のために動作しますが、home_url()私のコードはフォームがホームページにあると想定しているため、現在のページのURLで変更する必要があると思います。私はget_current_page_url()別の質問に関数をここに投稿しましたが、どれを覚えていないのですか
-onetrickpony

2

Gravity Formsは、WordPress、IMOに最適なコンタクトフォームプラグインです。ベータ版の最新バージョンには、ユーザー登録アドオンがあります。私はそれを試してみましたが、うまくいきます。ただし、費用がかかります...開発者ライセンスは199ドルです。

価格ページ http://www.gravityforms.com/purchase-gravity-forms/

ユーザー登録アドオンについて語るブログ投稿 http://www.gravityhelp.com/

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

詳細仕様:

ユーザー登録アドオンの機能の一部を次に示します。

  • ユーザー登録– WordPressで利用可能なユーザー登録フィールドにフォームフィールドをマッピングすることにより、ユーザーを登録するフォームをセットアップします。
  • ユーザーメタ–必要に応じて、バイオ、インスタントメッセージングID、名、姓、カスタムユーザーメタなどのユーザーメタデータを簡単に入力します。
  • BuddyPress統合-ユーザー登録プロセスの一部としてBuddyPressプロファイルフィールドデータを入力します。現在、BuddyPress v1.2.6で動作します。
  • 支払いの統合-ユーザー登録が行われる前に支払いが必要です。PayPalサブスクリプションのサポート、およびサブスクリプションがキャンセルされた場合のユーザーロールの変更またはユーザーの削除が含まれます。
  • パスワードフィールド-ユーザー登録アドオンは、フォームで使用するためにパスワードフィールドをGravity Formsに追加します。[パスワード]フィールドには、確認オプションと、組み込みのパスワード強度チェッカーオプションが含まれています。
  • 投稿者-ユーザー登録アドオンと投稿作成を単一のフォームに統合し、作成される投稿の作成者がアドオンによって登録されたユーザーになるようにします。
  • サイトの作成-WordPressネットワーク(マルチサイト)インストールでサイトを自動的に作成し、新しく作成したユーザーをサイトの管理者として割り当てます。

1

simplemodalログインプラグインを試してください。これにより、登録とログインが可能になり(ユーザー登録を有効にする必要があります)、非常に見栄えがよくなります。


閉じますが、私が必要なものではありません。既存のテンプレートにドロップできるものが必要です。
ピピン

うん.. I ..どうやってテンプレートに入れないの?
リン

シンプルモーダルログインを使用して設計を終えたばかりのサイトを次に示します。purevapes.com は、上部の登録リンクとログインリンクに注意してください。ユーザーがブログのフロントエンドから離れることはありません。テンプレートに簡単なHTMLコードを使用してそれらを組み込むことができ、管理パネルではなくフロントページにユーザーをリダイレクトします。そのため、これをどのテンプレートに「ドロップ」することができないのかわかりません。
リン

モーダルウィンドウとしてではなく、実際のページに含まれているように「ドロップイン」を意味しました。これが私が見つけたばかりのプラグインです:wordpress.org/extend/plugins/simplr-registration-form
Pippin

ああ、分かった。モーダルウィンドウに問題があるとは思いもしませんでしたが、今ではどこにあるのかがわかります。プラグインのリンクをありがとう、私の武器庫にそれを投げます。あなたの答えを見つけてくれてうれしいです:)
リン

0

テーマMy Loginプラグインを使用できます


登録フォームを機能させることができないことを除いて、プラグインはうまく機能するようです。ログインフォームは正常に表示されますが、登録フォームにアクセスしようとすると、デフォルトのワードプレスのフォームに移動します。ページに登録フォームを表示する方法はありますか?
ピピン

それは私が書いた私のプラグインではありません:P
Tareq

0

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

現在のWordpress登録フォームからフィールド名およびその他のものをコピーします。カスタムフォームに非表示のものも含めて同じ名前のフィールドがあることを確認してから、フォームアクションに適切な登録URLを指定するだけです:http : //www.yourblog.com/wp-login.php? action =register-その後、フォームの処理方法が気に入らない場合は、登録後のフォームのリダイレクト方法も変更します。

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

最初のソリューションは、あなたがやりたいことをするべきです。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.