多站点wordpress $ user->角色为空,$ wp_roles->角色为空......?

时间:2018-01-23 01:02:09

标签: php wordpress roles multisite

在Wordpress Multisite上以三个不同的用户身份登录,具有三个不同的角色:superadmin,订阅者和新的自定义角色“school_contact” - 登录后我想根据角色将其重定向到其他位置。所以我们有一个可以处理登录重定向的工作插件,但现在我想检测用户角色并根据该角色将其发送到不同的位置。

问题是,$ user->角色为我的用户返回空数组,如[],除了一个订阅者用户。

经过进一步调查,$ wp_roles->角色返回null。

这是我的代码:

add_filter( 'login_redirect', 'my_login_redirect', 10, 3 );

function my_login_redirect( $redirect_to, $request, $user ){
    AssistanceLeagueController::writeTolog("Login detected. Current user roles: " . json_encode($user->roles)); //prints []
    AssistanceLeagueController::writeTolog("All Roles: " . json_encode($wp_roles->roles)); // prints null
}

对于superadmin和School Contact来说,结果相同。

我尝试过使用$user = wp_get_current_user();但是我的用户没有返回任何内容。我认为这是因为我在登录过程的最初阶段已经附加,并且用户尚未在技术上登录。

多一点信息 当我为superadmin输出json_encode($ user)时,我得到了这个:

{"data":{"ID":"19782","user_login":"optewebdev","user_pass":"$P$BgY8wrhUKPuB9venGB                          XqRDAXz58coL0","user_nicename":"optewebdev","user_email":"david@opteweb.c                          om","user_url":"http:\/\/www.opteweb.com","user_registered":"2015-12-12 0                          1:01:13","user_activation_key":"1513759265:$P$BrkXfIXahs9QknsztysSAl19Ej9                          udy1","user_status":"0","display_name":"optewebdev","spam":"0","deleted":                          "0"},"ID":19782,"caps":{"manage_signup_sheets":true},"cap_key":"wp_capabi                          lities","roles":[],"allcaps":{"manage_signup_sheets":true},"filter":null}

当我输出superadmin的json_encode($ user)时,我得到了这个:

{"data":{"ID":"26945","user_login":"schoolcontact-test","user_pass":"$P$BmMrcYf.fxTI0mZM3ZkKiV9KB.GUbF.","user_nicename":"schoolcontact-test","user_email":                          "test@opteweb.com","user_url":"","user_registered":"2018-01-22 23:09:55",                          "user_activation_key":"","user_status":"0","display_name":"Darren Marshal                          l","spam":"0","deleted":"0"},"ID":26945,"caps":[],"cap_key":"wp_capabilit                          ies","roles":[],"allcaps":[],"filter":null}

也很有用:这是我从角色的wp_options表中获得的内容:

s:13:"administrator";a:2:{s:4:"name";s:13:"Administrator";s:12:"capabilities";a:78:{s:13:"switch_themes";b:1;s:11:"edit_themes";b:1;s:16:"activate_plugins";b:1;s:12:"edit_plugins";b:1;s:10:"edit_users";b:1;s:10:"edit_files";b:1;s:14:"manage_options";b:1;    s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:6:"import";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b    :1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:8:"level_10";b:1;s:7:"level_9";b:1;s:7:"level_8";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_other    s_pages";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"d    elete_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;s:12:"delete_users";b:1;s:12:"create_users";b:1;s:17:"unfiltered_upload";b:1;s    :14:"edit_dashboard";b:1;s:14:"update_plugins";b:1;s:14:"delete_plugins";b:1;s:15:"install_plugins";b:1;s:13:"update_themes";b:1;s:14:"install_themes";b:1;s:11:"update_core";b:1;s:10:"list_users";b:1;s:12:"remove_users";b:1;s:13:"promote_users";b:1;s:18:"    edit_theme_options";b:1;s:13:"delete_themes";b:1;s:6:"export";b:1;s:14:"ts_vcsc_extend";b:1;s:6:"sp_cdm";b:1;s:14:"sp_cdm_vendors";b:1;s:15:"sp_cdm_settings";b:1;s:15:"sp_cdm_projects";b:1;s:15:"sp_cdm_uploader";b:1;s:13:"sp_cdm_addons";b:1;s:14:"sp_cdm_c    lients";b:1;s:11:"sp_cdm_help";b:1;s:12:"sp_cdm_forms";b:1;s:13:"sp_cdm_groups";b:1;s:17:"sp_cdm_categories";b:1;s:15:"sp_cdm_top_menu";b:1;s:26:"sp_cdm_show_folders_as_nav";b:1;s:16:"sp_cdm_user_logs";b:1;s:24:"manage-wp-users-exporter";b:1;s:21:"use-wp-    users-exporter";b:1;}}

s:6:"editor";a:2:{s:4:"name";s:6:"Editor";s:12:"capabilities";a:35:{s:17:"moderate_comments";b:1;s:17:"manage_categories";b:1;s:12:"manage_links";b:1;s:12:"upload_files";b:1;s:15:"unfiltered_html";b:1;s:10:"edit_posts";b:1;s:17:"edit_others_posts";b:1;s:2    0:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:10:"edit_pages";b:1;s:4:"read";b:1;s:7:"level_7";b:1;s:7:"level_6";b:1;s:7:"level_5";b:1;s:7:"level_4";b:1;s:7:"level_3";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:17:"edit_others_pa    ges";b:1;s:20:"edit_published_pages";b:1;s:13:"publish_pages";b:1;s:12:"delete_pages";b:1;s:19:"delete_others_pages";b:1;s:22:"delete_published_pages";b:1;s:12:"delete_posts";b:1;s:19:"delete_others_posts";b:1;s:22:"delete_published_posts";b:1;s:20:"delet    e_private_posts";b:1;s:18:"edit_private_posts";b:1;s:18:"read_private_posts";b:1;s:20:"delete_private_pages";b:1;s:18:"edit_private_pages";b:1;s:18:"read_private_pages";b:1;s:14:"ts_vcsc_extend";b:1;}}

s:6:"author";a:2:{s:4:"name";s:6:"Author";s:12:"capabilities";a:10:{s:12:"upload_files";b:1;s:10:"edit_posts";b:1;s:20:"edit_published_posts";b:1;s:13:"publish_posts";b:1;s:4:"read";b:1;s:7:"level_2";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_po    sts";b:1;s:22:"delete_published_posts";b:1;}}

s:11:"contributor";a:2:{s:4:"name";s:11:"Contributor";s:12:"capabilities";a:5:{s:10:"edit_posts";b:1;s:4:"read";b:1;s:7:"level_1";b:1;s:7:"level_0";b:1;s:12:"delete_posts";b:1;}}

s:10:"subscriber";a:2:{s:4:"name";s:10:"Subscriber";s:12:"capabilities";a:2:{s:4:"read";b:1;s:7:"level_0";b:1;}}

s:14:"school_contact";a:2:{s:4:"name";s:14:"School Contact";s:12:"capabilities";a:3:{s:4:"read";b:1;s:7:"level_0";b:1;s:13:"manage_school";b:1;}}

这只是来自wp_options表,而不是来自任何多站点网站的wp_xx_options表......

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,事实证明我没有检查好网站 使用 Code,一切都会好的。