2017-08-01 70 views
1

我正在嘗試向我的WordPress登錄名添加跟蹤,但功能current_user_can()wp_login動作中不起作用。這是我的代碼:current_user_can無法在wp_login動作中工作

function track_logins() 
{ 
    error_log('tracking login'); 
    global $current_user,$wpdb; 
    $user_id = $current_user->ID; 
    $org_id = get_org_from_user ($user_id); 
    if(current_user_can("is_student")) 
    { 
     error_log('its a student'); 
     $record = $wpdb->insert(TABLE_TRACK,array(
      'user_id' => $user_id, 
      'org_id' => $org_id, 
      'date' => date('Y-m-d H:i:s'), 
      'type' => 'login' 

      ) 
     ); 
    } 
} 
add_action('wp_login', 'track_logins'); 

它顯示第一個錯誤日誌,但不是第二個。它不會進入if語句。

回答

1

我看了一下你的代碼,可能有一個解決方案給你,但首先我要做一些假設,看看你的代碼。

假設

1)你想檢查用戶的角色,看看他們是否有學生分配

2)get_org_from_user()是一個函數的地方在你的代碼,如果無法將其刪除從我的溶液

4.)TABLE_TRACK表名稱被定義一些其中與表匹配刀片的輸入

個功能的輸入

1)的用戶的用戶名使用

$user_login 

2.)甲WP_User對象(約我們的信息登錄用戶)Codex Ref

$user 

解登錄

function track_logins($user_login, $user) 
{ 
    // declare database 
    global $wpdb; 

    //not sure what this is? 
    $org_id = get_org_from_user ($user_id); 

    //I'm assuming you want to check the user role and 
    //check for user role 
    foreach($user->roles as $role){ 
     //replace role with the role you assigned to your students 
     if($role === 'administrator'){ 
      $wpdb->insert(TABLE_TRACK,array(
       'user_id' => $user->ID, 
       'org_id' => $org_id, 
       'date' => date('Y-m-d H:i:s'), 
       'type' => 'login' 
      ) 
     ); 
     } 
    } 
} 
add_action('wp_login', 'track_logins', 10, 2); 

wp_login掛鉤

我加了10和2月底,對WordPress的抄本小記一下,乾脆把套鉤的優先級,所以我們可以得到WP_User對象傳遞給我們的函數 https://codex.wordpress.org/Plugin_API/Action_Reference/wp_login