Performance isse (including solution)
-
My WordPress has more than 3000 user and I have some performance issues with ‘WPFront User Role Editor’. I found the root cause and can also provide solution.
The problem is, that loading admin.php?page=wpfront-user-role-editor-all-roles took several seconds, because every time for each user the following query is executed.
SELECT user_id, meta_key, meta_value
FROM wp_usermeta
WHERE user_id IN (<single-user-id>)
ORDER BY umeta_id ASCHere is the stack-traces which leads to this query.
update_meta_cache()
get_metadata()
get_user_meta()
WP_User->_init_caps()
WP_User->for_blog()
WP_User->init()
WP_User->__construct()
WP_User_Query->query()
WP_User_Query->__construct()
get_users()
WPFront_User_Role_Editor_List->get_list_filters()
WPFront_User_Role_Editor_List->list_roles()
do_action(‘toplevel_page_wpfront-user-role-editor-all-roles’)To fix this problem I basically changed two line in class-wpfront-user-role-editor-list.php to avoid the call of get_users().
line 137:
'user_count' => count(get_users(array('role' => $key))),
to
'user_count' => isset($user_count['avail_roles'][$key]) ? $user_count['avail_roles'][$key] : 0,
line 288:
if (count(get_users(array('role' => $key))) > 0)
to
if ((isset($user_count['avail_roles'][$key]) ? $user_count['avail_roles'][$key] : 0) > 0)
I introduced a new variable $user_count which is the result of count_users().
$user_count = count_users();
I hope this will help other users and make the plug-in even better than it already is.
- The topic ‘Performance isse (including solution)’ is closed to new replies.