Formulário de registro front-end

13

Estou procurando uma maneira fácil de colocar o formulário de registro de usuário no front-end de um site WordPress. Eu já usei o wp_login_form () para colocar o formulário de login no front-end, mas agora preciso fazer o mesmo com o formulário de inscrição.

Alguma ideia?

Pippin
fonte
Desculpe, mas o que você quer dizer com "front-end". Acho que entendo o que front-end e back-end significam, mas não entendo como você pode colocar um formulário em qualquer outro lugar que não seja o front-end. Você quer dizer primeira página?
Mads Skjern 22/10

Respostas:

7

Jeff Starr escreveu um ótimo tutorial sobre registro de front-end, login e recuperação de senha,
seguindo a abordagem semelhante à sugerida por onetrickpony . Portanto, tome isso como acompanhamento da resposta e como outro recurso que pode ajudá-lo a fazê-lo:
http://digwp.com/2010/12/login-register-password-code/

Agora você tem dois exemplos de como codificar isso sozinho e confie em mim - definitivamente vale a pena fazer dessa maneira (sua). Não é tão difícil e oferece liberdade , flexibilidade e reutilização que nenhum plug-in pode oferecer.

Michal Mau
fonte
4

caso você queira lidar com isso sozinho, eis o que eu uso:

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;
}

o código é quase idêntico ao da página de inscrição do usuário.

adicione seu formulário ao seu modelo:

<?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>

você pode criar um widget com isso, um código de acesso ou apenas o modelo de página usual ...

onetrickpony
fonte
Parece ótimo, embora não parecesse funcionar. Eu encontrei um plugin que funciona muito bem, então obrigado pela ajuda.
Pippin
funciona para mim, mas acho que você precisa alterar home_url()o URL da página atual porque meu código assume que o formulário está na página inicial. Eu publiquei uma get_current_page_url()função aqui na outra pergunta, não me lembro qual um porém
onetrickpony
2

Gravity Forms é o melhor plugin de formulário de contato para WordPress, IMO. A versão mais recente, na versão beta, possui um complemento de registro do usuário. Eu tentei e funciona muito bem. Vai custar-lhe embora ... é $ 199 para uma licença de desenvolvedor.

Página de preços http://www.gravityforms.com/purchase-gravity-forms/

Postagem no blog falando sobre o complemento de registro do usuário http://www.gravityhelp.com/

Eu recomendo este plugin para a comunidade WordPress.

Especificações detalhadas:

Aqui estão alguns dos recursos do complemento de registro do usuário:

  • Registro de usuário - Configure um formulário para registrar um usuário, mapeando seus campos de formulário para os campos de registro de usuário disponíveis no WordPress.
  • Meta do usuário - preencha com facilidade os metadados do usuário, como biografia, ID de mensagens instantâneas, nome e sobrenome, bem como metadados personalizados do usuário para atender às suas necessidades.
  • Integração BuddyPress - Preencha os dados do campo de perfil BuddyPress como parte do processo de registro do usuário. Atualmente trabalha com o BuddyPress v1.2.6.
  • Integração de pagamento - Exigir um pagamento antes que o registro do usuário ocorra. Inclui suporte para assinaturas do PayPal e alteração da função do usuário ou exclusão do usuário se a assinatura for cancelada.
  • Campo Senha - O complemento de registro do usuário adiciona um campo Senha aos Gravity Forms para uso em seus formulários. O campo Senha inclui uma opção de confirmação, bem como uma opção interna do verificador de força da senha.
  • Autor da postagem - integre o complemento de registro do usuário e a criação da postagem em um único formulário para que o autor da postagem criada seja o usuário registrado pelo complemento.
  • Criação de site - Crie automaticamente um site em uma rede WordPress (instalação de vários sites) e atribua os usuários recém-criados como Administrador do site.
Carson
fonte
1

Experimente o plugin de login simples. Ele permite o registro e o login (você precisa habilitar o registro do usuário) e possui uma aparência muito agradável.

Lynne
fonte
Perto, mas não exatamente o que eu preciso. Preciso de algo que possa ser inserido no meu modelo existente.
Pippin
Sim .. Eu .. Como você não pode colocar isso no seu modelo?
Lynne
Aqui está um site que eu acabei de criar usando o login simplemodal . Purevapes.com observe os links de registro e login na parte superior. O usuário nunca é retirado do front-end do blog. Você pode incorporá-los usando um código HTML simples no seu modelo, e eles redirecionam o usuário para a primeira página em vez do painel de administração. Portanto, não tenho certeza de como isso não pode ser 'descartado' em nenhum modelo.
Lynne
Eu quis dizer "caiu" como incluído na página real, não como uma janela modal. Aqui está o plugin Eu só encontrei para fazer isso: wordpress.org/extend/plugins/simplr-registration-form
Pippin
Ah entendo. Nem me ocorreu que a janela modal apresentaria um problema, mas agora posso ver onde há um lugar para isso e não. Obrigado pelo link do plugin, jogando isso no meu arsenal. Fico feliz que você encontrou a sua resposta :)
Lynne
0

Você pode usar o plugin Theme My Login

Tareq
fonte
Parece que seu plug-in pode funcionar muito bem, exceto que não consigo fazer com que o formulário de registro funcione. O formulário de login é exibido corretamente, mas quando tento acessar o formulário de registro, ele apenas me leva ao padrão wordpress. Existe uma maneira de apenas exibir o formulário de registro na página?
Pippin
Esse não é o meu plugin que eu escrevi: P
Tareq
0

Aqui está uma maneira fácil e agradável de fazer isso:

Copie os nomes dos campos e qualquer outro material do formulário de registro atual do Wordpress. Verifique se o formulário personalizado tem o mesmo nome, incluindo os ocultos, e aponte a ação do formulário para o URL de registro adequado: http://www.yourblog.com/wp-login.php?action=register - Você pode querer para alterar também como o formulário será redirecionado após o registro, se você não gostar de como ele é tratado.

Há também este plugin chamado Insite Login, que permite inserir o formulário de registro, o formulário de login e outros nas páginas do seu site: http://wordpress.org/extend/plugins/insitelogin/

A primeira solução deve fazer o que você quer que faça.

Dwayne Charrington
fonte
0

Caso precise de mais campos em seu formulário de registro, você pode usar o plug-in Profile Builder

Ele permite que você personalize seu site adicionando formulários de front-end para login, registro e edição de perfil através do uso de códigos de acesso.

Cristian Dumitru Antohe
fonte