Performance: Permission callbacks
This affects how quickly WordPress checks user permissions before rendering content or executing actions, impacting interaction responsiveness.
register_rest_route('myplugin/v1', '/data', array('methods' => 'GET', 'callback' => 'my_callback', 'permission_callback' => function() { return current_user_can('manage_options'); }));
register_rest_route('myplugin/v1', '/data', array('methods' => 'GET', 'callback' => 'my_callback', 'permission_callback' => function() { return current_user_can('manage_options') && expensive_db_check(); }));
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Expensive permission callback with DB query | N/A (server-side) | N/A | N/A | [X] Bad |
| Simple capability check in permission callback | N/A (server-side) | N/A | N/A | [OK] Good |
register_rest_route?register_rest_route allow?function my_permission_check() {
return current_user_can('edit_posts');
}
register_rest_route('myplugin/v1', '/data', [
'methods' => 'GET',
'callback' => 'my_data_callback',
'permission_callback' => 'my_permission_check'
]);function check_permission() {
if (current_user_can('edit_posts')) {
return true;
}
}edit_posts or publish_posts. Which permission callback function correctly implements this?Pass the test and this pattern moves unknown