답변:
Jeff Starr는 onetrickpony가 제안한
것과 유사한 접근 방식을 사용하여 프런트 엔드 등록, 로그인 및 암호 복구에 대한 훌륭한 자습서를 작성했습니다 . 따라서 이것을 그의 답변에 대한 후속 조치와 그것을 달성하는 데 도움이되는 다른 리소스로 가져 가십시오 : http://digwp.com/2010/12/login-register-password-code/
이제이 코드를 직접 코딩하고 신뢰하는 방법에 대한 두 가지 예가 있습니다.이 방법을 사용하는 것이 좋습니다. 그것은 어렵지 않으며 플러그인이 제공 할 수없는 자유 , 유연성 및 재사용 성 을 제공합니다.
이 문제를 직접 처리하려면 다음을 사용하십시오.
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 로그인 플러그인을 사용해보십시오. 등록 및 로그인이 가능하며 (사용자 등록을 활성화해야 함) 매우 잘 보입니다.
내가 한 일이 좋고 쉬운 방법은 다음과 같습니다.
현재 Wordpress 등록 양식에서 필드 이름 및 기타 항목을 복사하십시오. 사용자 정의 양식에 숨겨진 양식을 포함하여 동일한 이름 필드가 있는지 확인한 후 양식 조치가 올바른 등록 URL을 가리 키도록 하십시오 . http://www.yourblog.com/wp-login.php?action=register- 원하는 경우 양식을 처리하는 방법이 마음에 들지 않으면 등록 후 양식이 리디렉션되는 방식을 변경합니다.
Insite Login이라는 플러그인도 있습니다.이 플러그인을 사용하면 등록 양식, 로그인 양식 및 기타 항목을 사이트의 페이지에 놓을 수 있습니다. http://wordpress.org/extend/plugins/insitelogin/
첫 번째 솔루션은 원하는 작업을 수행해야합니다.
등록 양식에 더 많은 필드가 필요한 경우 프로파일 빌더 플러그인을 사용할 수 있습니다
짧은 코드를 사용하여 로그인, 등록 및 편집 프로파일을위한 프런트 엔드 양식을 추가하여 웹 사이트를 사용자 정의 할 수 있습니다.