Suporte » Ajustando o WordPress » Redirecionamento após registro de usuário

  • Resolvido kklo

    (@kklo)


    Olá,

    Após o novo usuário fazer o registro no site, eu quero que ele seja redirecionado para a pagina home. Mas somente após o registro, pois já tenho redirecinamento após o login/logout através do tema.

    Como posso fazer isto? Via plugin? Código?

    Agradeço qualquer ajuda.
    kklo

    • Este tópico foi modificado 6 anos, 9 meses atrás por Mário Valney.
Visualizando 15 respostas - 1 até 15 (de um total de 15)
  • Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Olá, tudo bem?

    Basta usar o filtro registration_redirect, como na documentação.

    add_filter( 'registration_redirect', 'my_redirect_home' );
    function my_redirect_home( $registration_redirect ) {
    	return home_url();
    }
    Criador do tópico kklo

    (@kklo)

    Oi, Mário

    Fiz exatamente isto, colei este código no functions.php do tema-childtheme, mas não funcionou

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Talvez tenha algo sobrescrevendo.
    Primeiro tenta aumentar a prioridade do filtro:

    add_filter( 'registration_redirect', 'my_redirect_home', 99 );

    Abraços

    Criador do tópico kklo

    (@kklo)

    Nada ainda.

    o arquivo vazio e coloquei assim:

    <?php
    add_filter( 'registration_redirect', 'my_redirect_home', 99 );
    
    add_filter( 'registration_redirect', 'my_redirect_home' );
    function my_redirect_home( $registration_redirect ) {
    	return home_url();
    }

    Continua sem funcionar

    Criador do tópico kklo

    (@kklo)

    Mario,

    Existe algum plugin que envia um email para o usuário após o registro e também faça o redirecionamento para a página home?

    O tema já existe um redirecionamento após login/logout, mas não para após registro.

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Você r egistrou o filtro duas vezes. Testa só com o:
    add_filter( 'registration_redirect', 'my_redirect_home', 99 );
    (remove o que não tem 99)

    Além disso, verifica se já não tem um redirecionamento forçado.
    Tem o link do registro para eu dar uma olhada?

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Existe algum plugin que envia um email para o usuário após o registro e também faça o redirecionamento para a página home?

    Não sei… só procurando e testando.
    Mas para quê plugin se estamos usando o filtro?

    A menos que seu site faça o registro de outras formas(por isso pedi o link ali em cima) e aí teria que modificar seu tema/plugin.

    Abraços

    Criador do tópico kklo

    (@kklo)

    O link do registro é http://www.cctur.com.br/funcao-registro-usuario/

    Mas só atraves deste link tu consegue verificar?

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Pronto. O que está acontecendo é que o seu tema/site possui um formulário de registro próprio e então não passa pelo filtro do WordPress.

    Se der uma olhada no formulário, ele submete para a própria página, então provavelmente a função de registro está lá.

    Minha sugestão seria: junto com o código PHP que imprime o alerta “Sucesso!.Registro bem-sucedido” você colocar um javascript para redirecionar. Algo assim:

    <script>
        setTimeout(function() {
            window.location.replace("<?php echo home_url(); ?>");
        }, 3000);
    </script>

    Assim ele volta para essa página, mas redireciona após 3 segundos (para dar tempo de ler o alerta).

    Criador do tópico kklo

    (@kklo)

    Obrigado Mario,

    Agora dá erro. Já coloquei este script em vários lugares e não deu certo. Desculpe, mas não sou programador, só copio e colo 🙁

    Não abusando da tua boa vontade, tomei a liberdade de colocar o codigo aqui que
    consta a mensagem e onde está o erro.

            static function _update_info_user($register_user,$echo = true){
    
                $html = '';
                $register_as = STInput::request('register_as');
                switch($register_as){
                    case "normal":
                        $html = '<div  class="alert alert-success"><button data-dismiss="alert" type="button" class="close"><span aria-hidden="true">×</span></button>';
                        $html .= "<strong>".__( 'Success!.' , ST_TEXTDOMAIN )."</strong>".__( 'Registration successful...' , ST_TEXTDOMAIN );
                        $html .= '</div>';
                        STUser::_send_admin_new_register_user($register_user);
                        break;
                    case "partner":
                        $data_certificates = array();
                        $validate = true;
    
                        update_user_meta($register_user,'st_pending_partner','1');
                        update_user_meta($register_user,'st_certificates',$data_certificates);
    
                        STUser::_send_admin_new_register_partner($register_user);
                        STUser::_send_customer_register_partner($register_user);
    
                        $html = '<div  class="alert alert-success"><button data-dismiss="alert" type="button" class="close"><span aria-hidden="true">×</span></button>';
                        $html .= "<strong>".__( 'Success!.' , ST_TEXTDOMAIN )."</strong>".__( 'Registration successful! Please wait for administrator\'s approval' , ST_TEXTDOMAIN );
                        $html .= '</div>';
                        break;
                }
    
                if($echo)
                echo $html;
                else return $html;
            }
    		<script>
    			setTimeout(function() {
    				window.location.replace("<?php echo home_url(); ?>");
    			}, 3000);
    		</script>

    Agradeço

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Você não tem que se desculpar por não ter conhecimento técnico. O que você precisa fazer é perguntar para tirarmos a dúvida.

    Voltando ao seu problema, parece que existem dois casos de registro: partner e normal. Se o redirecionamento for válido para todos, basta acrescentar o código na variável $html.

    Ou seja, retira o que acrescentou agora e adiciona antes de if($echo) o seguinte código:

    $html .= '<script>';
    $html .= 'setTimeout(function() { window.location.replace("' . home_url() . '"); }, 3000);';
    $html .= '</script>';

    Acho que isso deve resolver.

    Criador do tópico kklo

    (@kklo)

    Funcionou,
    Muito obrigado mesmo.
    Só falta um plugin para confirmação de email no ato do registro, tens alguma indicação?

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Não. Mas talvez não consiga um que funcione, pois o seu tema é quem registra o usuário, então ele pode ter feito de alguma forma que não dê suporte.

    Agora mudando um pouco de assunto: essas modificações foram feitas diretamente no Tema, né? É um tema próprio ou baixado/comprado? Pergunto isso pois ao receber atualizações do Tema (nunca devemos deixar de receber atualizações) você perderá essas alterações.

    Se for o caso, recomendo dar uma olhada nos Temas Filhos:
    https://codex.wordpress.org/pt-br:Temas_Filhos
    https://mariovalney.com/como-criar-um-tema-filho-child-theme-para-wordpress/

    Abraços

    Criador do tópico kklo

    (@kklo)

    coloquei no tema filho, para evitar perda, inclusive das traduções. O tema é comprado do Forestheme
    Obrigado, te devo umas cervas

    Moderador Mário Valney

    (@mariovalney)

    WordPress Cleric of Fire

    Entendi. Bem… se o tema é comprado entre em contato com o suporte deles, afinal você pagou por ele.

    Não damos suporte a nada comprado aqui, por favor leia as Regras do Fórum.

    Abraços

Visualizando 15 respostas - 1 até 15 (de um total de 15)
  • O tópico ‘Redirecionamento após registro de usuário’ está fechado para novas respostas.