Ninja Forms plugin protects all its menu items with ‘manage_options” user capability by default.
Thanks to plugin developers it’s possible to replace default user capability for every menu item using custom filter:
Ninja Forms – ninja_forms_menu_ninja-forms_capability
Dashboard – ninja_forms_admin_all_forms_capabilities
Add New – ninja_forms_admin_add_new_capabilities
Submissions – ninja_forms_admin_submissions_capabilities
Import/Export – ninja_forms_admin_import_export_capabilities
Settings – ninja_forms_admin_settings_capabilities
Get Help – ninja_forms_admin_status_capabilities
Add-Ons – ninja_forms_admin_extend_capabilities
How to use these filters? Look at the example below:
/*
* Custom capabilities for Ninja Forms admin menu
*/
// Ninja Forms
add_filter('ninja_forms_menu_ninja-forms_capability', 'ninja_forms_menu_get_cap', 10, 1);
function ninja_forms_menu_get_cap( $cap ) {
$cap = 'nf_admin_menu';
return $cap;
}
// Ninja Forms -> Dashboard
add_filter('ninja_forms_admin_all_forms_capabilities', 'ninja_forms_dashboard_get_cap', 10, 1);
function ninja_forms_dashboard_get_cap( $cap ) {
$cap = 'nf_admin_menu';
return $cap;
}
// Ninja Forms -> Add New
add_filter('ninja_forms_admin_add_new_capabilities', 'ninja_forms_add_new_get_cap', 10, 1);
function ninja_forms_add_new_get_cap( $cap ) {
$cap = 'nf_add_new';
return $cap;
}
// Ninja Forms -> Submissions
add_filter('ninja_forms_admin_submissions_capabilities', 'ninja_forms_submissions_get_cap', 10, 1);
function ninja_forms_submissions_get_cap( $cap ) {
$cap = 'nf_submissions';
return $cap;
}
// Ninja Forms -> Settings
add_filter('ninja_forms_admin_settings_capabilities', 'ninja_forms_settings_get_cap', 10, 1);
function ninja_forms_settings_get_cap( $cap ) {
$cap = 'nf_settings';
return $cap;
}
// Ninja Forms -> Get Help
add_filter('ninja_forms_admin_status_capabilities', 'ninja_forms_status_get_cap', 10, 1);
function ninja_forms_status_get_cap( $cap ) {
$cap = 'nf_status';
return $cap;
}
// Ninja Forms -> Add-Ons
add_filter('ninja_forms_admin_extend_capabilities', 'ninja_forms_extend_get_cap', 10, 1);
function ninja_forms_extend_get_cap( $cap ) {
$cap = 'nf_addons';
return $cap;
}
If you need to change default capability for some add-on, you need to search add-on source code for the class which extends Ninja Forms abstract class NF_Abstracts_Submenu.
Command for Linux:
grep -rn 'NF_Abstracts_Submenu'
For example, for the “File uploads” add-on I found:
includes/admin/menus/uploads.php:5:final class NF_FU_Admin_Menus_Uploads extends NF_Abstracts_Submenu {
Then at the file with needed class look for the menu_slug property value:
final class NF_FU_Admin_Menus_Uploads extends NF_Abstracts_Submenu {
public $parent_slug = 'ninja-forms';
public $menu_slug = 'ninja-forms-uploads';
Finally filter for the add-on capability will be looked this way:
add_filter('ninja_forms_submenu_ninja-forms-uploads_capability', 'ninja_forms_uploads_cap', 10, 1);
function ninja_forms_uploads_cap( $cap ) {
$cap = 'nf_uploads';
return $cap;
}
Pay attention that capability ‘nf_uploads’ you have to create and grant to the needed role(s) manually.
Code above was tested with WordPress 5.3.2 and Ninja Forms 3.4.24.1