2017-06-27 15 views
0

私は役割を持つユーザーがいます。ユーザーのログイン時に、役割が "gdmp_subscriber"であるかどうかをチェックし、それが本当なら - >特定のURLをURLにリダイレクトします。ログインするだけではない場合私は次のことを試しましたが、成功しました。何か案は ?ユーザーに特定の役割がある場合は常にリダイレクト

クラス:

<?php 
define('GDMP_VERSION', '1.0'); 
define('GDMP_PATH', dirname(__FILE__)); 
define('GDMP_PATH_INCLUDES', dirname(__FILE__) . '/inc'); 
define('GDMP_FOLDER', basename(MP_PATH)); 
define('GDMP_URL', plugins_url() . '/' . MP_FOLDER); 
define('GDMP_URL_INCLUDES', MP_URL . '/inc'); 


class GD_Marketing_Portal { 

    public function __construct() { 
     register_activation_hook(__FILE__, 'gdmp_on_activate_callback'); 
     register_deactivation_hook(__FILE__, 'gdmp_on_deactivate_callback'); 
     add_action('wp_login', array($this, 'redirect_to_mp'), 10, 2); 
    } 
    public function redirect_to_mp($user) { 
     if (user_can($user, 'gdmp_subscriber')) { 
      wp_redirect(home_url('marketing-portal')); 
     } 
    } 
} 
function gdmp_on_activate_callback() { 
    $capabilities = array(
     'read' => true, 
    ); 

    add_role('gdmp_subscriber', __('Marketing Portal Subscriber', 'gdmp'), $capabilities); 
} 

function gdmp_on_deactivate_callback() { 
    if(get_role('gdmp_subscriber')) { 
     remove_role('gdmp_subscriber'); 
    } 
} 
$marketing_portal = new GD_Marketing_Portal(); 

とページのhtml:

get_header(); ?> 
<?php 
if (is_user_logged_in()) { 
?> 
<section class="section"> 
    <div class="row"> 
     <?php 
     if (! post_password_required()) { 
     ?> 
     <div class="column thumbnail-wrapper"> 
      <?php the_post_thumbnail('full'); ?> 
     </div><!-- .column --> 

     <div class="column title-wrapper"> 
      <h1><?php the_title(); ?></h1><!-- .heading-title --> 
     </div><!-- .column --> 

     <div class="column subtitle-wrapper"> 
      <h4><?php echo $subtitle ?></h4><!-- .heading-title --> 
     </div><!-- .column --> 
    </div><!-- .row --> 
    <?php 
    } 
    ?> 
    <div class="row"> 
     <div class="column"> 
      <?php the_content(); ?> 
     </div> 
    </div><!-- .row --> 
    <?php 
    if (! post_password_required()) { 
      ?> 
      <?php if ($form_1_shortcode || $form_2_shortcode) : ?> 
       <div class="row"> 
        <div class="column" id="mp-form-tabs"> 
         <ul> 
          <?php if ($form_1_shortcode) : ?> 
           <li><a href="#mp-form-1">Form 1</a></li> 
          <?php endif; 
          if ($form_2_shortcode) : ?> 
           <li><a href="#mp-form-2">Form 2</a></li> 
          <?php endif; ?> 
         </ul> 
         <?php if ($form_1_shortcode) : ?> 
          <div id="mp-form-1"> 
           <p><?php echo do_shortcode($form_1_shortcode); ?></p> 
          </div> 
         <?php endif; 
         if ($form_2_shortcode) : ?> 
          <div id="mp-form-2"> 
           <p><?php echo do_shortcode($form_2_shortcode); ?></p> 
          </div> 
         <?php endif; ?> 
        </div> 
       </div> 
      <?php endif; ?> 
      <?php 
      } 
     ?> 
    </section> 
    <?php 
} else { 
    auth_redirect(); 
} 
?> 
<?php get_footer(); ?> 

答えて

1
function redirect_users_by_role() { 

    $current_user = wp_get_current_user(); 
    $role_name  = $current_user->roles[0]; 

    if ('gdmp_subscriber' === $role_name) { 
     wp_redirect(get_home_url() . '/path'); 
     exit; 
    } 

} 
add_action('admin_init', 'redirect_users_by_role'); 

はあなたのfunctions.phpに以下を追加します。ユーザー役割が 'gdmp subscriber'のユーザーを選択したURLにリダイレクトします。