回答:
Jeff Starrは、onetrickponyによって提案され
たのと同様のアプローチをとって、フロントエンドの登録、ログイン、およびパスワードの回復に関する優れたチュートリアルを作成しました。したがって、これを彼の答えのフォローアップとして、またあなたがそれを成し遂げるのを助けるかもしれない別のリソースとしてとってください:http :
//digwp.com/2010/12/login-register-password-code/
これを自分でコーディングして私を信頼する方法の2つの例があります。この(あなた自身の)方法で行う価値は間違いありません。それほど難しくはなく、プラグインでは提供できない自由、柔軟性、再利用性を提供します。
あなたがこれを自分で処理したい場合、ここで私が使用するものです:
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()
別の質問に関数をここに投稿しましたが、どれを覚えていないのですか
Gravity Formsは、WordPress、IMOに最適なコンタクトフォームプラグインです。ベータ版の最新バージョンには、ユーザー登録アドオンがあります。私はそれを試してみましたが、うまくいきます。ただし、費用がかかります...開発者ライセンスは199ドルです。
価格ページ http://www.gravityforms.com/purchase-gravity-forms/
ユーザー登録アドオンについて語るブログ投稿 http://www.gravityhelp.com/
このプラグインをWordPressコミュニティに強くお勧めします。
詳細仕様:
ユーザー登録アドオンの機能の一部を次に示します。
simplemodalログインプラグインを試してください。これにより、登録とログインが可能になり(ユーザー登録を有効にする必要があります)、非常に見栄えがよくなります。
テーマMy Loginプラグインを使用できます
これは私がこれをやった素敵で簡単な方法です:
現在のWordpress登録フォームからフィールド名およびその他のものをコピーします。カスタムフォームに非表示のものも含めて同じ名前のフィールドがあることを確認してから、フォームアクションに適切な登録URLを指定するだけです:http : //www.yourblog.com/wp-login.php? action =register-その後、フォームの処理方法が気に入らない場合は、登録後のフォームのリダイレクト方法も変更します。
Insite Loginと呼ばれるこのプラグインもあり、登録フォーム、ログインフォームなどをサイトのページにドロップできます:http : //wordpress.org/extend/plugins/insitelogin/
最初のソリューションは、あなたがやりたいことをするべきです。
登録フォームにさらにフィールドが必要な場合は、プロファイルビルダープラグインを使用できます
ショートコードを使用して、ログイン、登録、編集プロファイル用のフロントエンドフォームを追加することで、Webサイトをカスタマイズできます。