프론트 엔드 등록 양식


13

WordPress 사이트의 프런트 엔드에 사용자 등록 양식을 쉽게 배치 할 수있는 방법을 찾고 있습니다. 로그인 양식을 프론트 엔드에 배치하기 위해 이미 wp_login_form ()을 사용했지만 이제는 가입 양식과 동일한 작업을 수행해야합니다.

어떤 아이디어?


죄송합니다. "프론트 엔드"는 무슨 뜻입니까? 프론트 엔드와 백엔드가 무엇을 의미하는지 이해하지만 프론트 엔드 이외의 다른 곳에 양식을 배치 할 수있는 방법을 이해하지 못합니다. 첫 페이지를 의미합니까?
Mads Skjern

답변:


7

Jeff Starr는 onetrickpony가 제안한
것과 유사한 접근 방식을 사용하여 프런트 엔드 등록, 로그인 및 암호 복구에 대한 훌륭한 자습서를 작성했습니다 . 따라서 이것을 그의 답변에 대한 후속 조치와 그것을 달성하는 데 도움이되는 다른 리소스로 가져 가십시오 : http://digwp.com/2010/12/login-register-password-code/

이제이 코드를 직접 코딩하고 신뢰하는 방법에 대한 두 가지 예가 있습니다.이 방법을 사용하는 것이 좋습니다. 그것은 어렵지 않으며 플러그인이 제공 할 수없는 자유 , 유연성재사용 성 을 제공합니다.


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>

이것으로 짧은 위젯이나 일반적인 페이지 템플릿으로 위젯을 만들 수 있습니다 ...


작동하지 않는 것처럼 보이지만 멋지게 보입니다. 그래도 잘 작동하는 플러그인을 찾았으므로 도움을 주셔서 감사합니다.
Pippin

나를 위해 작동하지만 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 로그인 플러그인을 사용해보십시오. 등록 및 로그인이 가능하며 (사용자 등록을 활성화해야 함) 매우 잘 보입니다.


가까이 있지만, 내가 필요한 것은 아닙니다. 기존 템플릿에 추가 할 수있는 것이 필요합니다.
Pippin

예 .. I .. 어떻게 템플릿에 넣을 수 없습니까?
Lynne

여기에 simplemodal 로그인을 사용하여 디자인을 완료 한 사이트가 있습니다. purevapes.com 상단의 등록 및 로그인 링크를 확인하십시오. 사용자는 블로그의 프론트 엔드에서 멀어지지 않습니다. 템플릿에 간단한 HTML 코드를 사용하여 통합 할 수 있으며 사용자를 관리자 패널 대신 첫 페이지로 리디렉션합니다. 따라서 어떻게 템플릿에 '삭제'할 수 없는지 잘 모르겠습니다.
Lynne

모달 창이 아니라 실제 페이지에 포함 된 것처럼 "드롭"되었다는 의미입니다. 방금 찾은 플러그인은 다음과 같습니다. wordpress.org/extend/plugins/simplr-registration-form
Pippin

아, 알겠습니다 모달 창에 문제가 있다고 생각하지는 않았지만 지금은 어디에 있는지 알 수 있습니다. 플러그인 링크 덕분에 내 무기고에 던졌습니다. 답변을 찾아 주셔서 감사합니다 :)
Lynne

0

당신은 테마 내 로그인 플러그인을 사용할 수 있습니다


등록 양식을 사용할 수 없다는 점을 제외하고 플러그인이 잘 작동하는 것 같습니다. 로그인 양식은 잘 표시되지만 등록 양식으로 이동하려고하면 기본 워드 프레스 양식으로 이동합니다. 페이지에 등록 양식을 표시하는 방법이 있습니까?
Pippin

그건 내가 작성한 플러그인이 아닙니다 : 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.