• luandrelima

    (@luandrelima)


    Ola Pessoal!

    Sou novo por aqui. Estou desenvolvendo um site onde a area de membros tem 2 tipos e onde cada um deles tera acesso a areas totalmente distintas. Uma direcionada a um tipo de publico e outra direcionada a outro tipi de publico com ne essidades e conteudos bem diferentes.
    Estive testando alguns plugins (s2 member, members) porem nao tive sucesso, estes plugins direcionam ou restringem parte do conteudo somente e nao direcionam para urls distintas.
    Alguem poderia me auxiliar indicando um plugin que resolva?

    Muito obrigado

Visualizando 2 respostas - 1 até 2 (de um total de 2)
  • Acredito que nem todo plugin pode realizar o que você deseja no final, nunca usei sempre desenvolvi uma função que realiza-se a ação para mim, mas pesquisei alguns plugins acredito que este vai lhe ajudar!

    https://br.wordpress.org/plugins/peters-login-redirect/

    Abraços, fico no aguardo do feedback! 🙂

    Olá @luandrelima, tudo bem?

    Venho trazer uma outra opção para o seu problema, case ja tenha resolvido nos mostre como resolveu.

    A solução que quero trazer é a seguinte: Você pode criar um Custom field para os usuários e na hora do cadastro escolher se ele é da Área 1 ou da Área 2, e na hora do login o sistema vai puxar do banco de dados de qual área ele é redirecionando-o para o link desejado.

    Cole o código no seu functions.php

    add_action( 'show_user_profile', 'im_user_field' );
    add_action( 'edit_user_profile', 'im_user_field' );
    
    function im_user_field( $user ) { 
    	//Verifica se já existe algo salvo para o Usuario
      $area  = get_the_author_meta( 'tipo_de_area', $user->ID );
    	
      //Somente o Admin do sistema poderá ver esse formulario 
    	if ( current_user_can( 'administrator' ) ) {
    	
    	?>
        <table class="form-table">
          <h3>Tipo de Área</h3>
            <tr>
              <td>
    			       <label for="address"><b><?php _e("Área"); ?></b></label>	
    			       <select name="tipo_de_area">
                    <?php   
                        // Caso o usuario seja da Area 1, marca a option 1         		          						
              					if($area == 'area1'){						
              						echo '<option value="area1" selected="selected">Área 1</option>';
              					} else {
              						echo '<option value="area1">Área 1</option>';
              					}	  
                        // Caso o usuario seja da Area 2, marca a option 2                  
                        if($area == 'area2'){						
              						echo '<option value="area2" selected="selected">Área 2</option>';
              					} else {
              						echo '<option value="area2">Área 2</option>';
              					}					          			
              			?>	         
                 </select>		  
    		      </td>              			        
            </tr>
        </table>  
      
        <?php  
        }
    }

    Esta parte do código vai criar um select com a(s) área(s) que vc terá no seu sistema.

    //Salva a informação no Banco de dados
    add_action( 'personal_options_update', 'save_im_user_field' );
    add_action( 'edit_user_profile_update', 'save_im_user_field' );
        
    function save_im_user_field( $user_id ) {
      //Salva a informação no Banco de dados só se for pelo Admin do sistema     
    	if ( current_user_can( 'administrator') ) { 
    	  update_user_meta( $user_id, 'tipo_de_area', $_POST['tipo_de_area'] );			
      }
    }

    Esta parte vai salvar a área no banco de dados

    function im_redireciona_usuario( $url, $request, $user ) {
       if( $user && is_object( $user ) && is_a( $user, 'WP_User' ) ) {
            // Verifica qual o tipo de area do usuario Logado
            $area = get_user_meta( $user->ID, 'tipo_de_area', true );
               
            if( 'area1' ==  $area ) {
              $url = home_url('/redireciona-para-area1/'); //Se for a área 1
            } else if( 'area2' == $area ){
              $url = home_url('/redireciona-para-area2/'); //Se for a área 2
            } else {
              $url = admin_url(); //Se NÃO for a área 1 ou 2, vai para o Painel
            }
        }  
        return $url;
    }
    add_filter( 'login_redirect', 'im_redireciona_usuario', 10, 3 );

    Esta parte é para redirecionar o usuário de acordo com área cadastrada no sistema.

    Você pode ajustar este código de acordo com as suas necessidades, aumentando o numero de áreas por exemplo.

    Bem @luandrelima, espero que este código possa lhe ajudar e caso dê certo deixe suas experiências.
    Até mais.

    • Esta resposta foi modificada 6 anos, 11 meses atrás por Wolffgang Lemos.
Visualizando 2 respostas - 1 até 2 (de um total de 2)
  • O tópico ‘Areas de Membros Distintas’ está fechado para novas respostas.