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.