Ninja Forms er gratis, intuitivt og hurtigt. desværre, er det også ret låst angående hvilke WordPress roller der kan oprette og vedligeholde forms.

Om det er grundet marketing så Ninja Forms kan få solgt deres “Front-End Posting” plugin skal jeg ikke kunne sige (men jeg mistænker dem for det). Men som det ser ud i øjeblikket er det kun administratorer der har adgang til at oprette og redigere Ninja Forms i WordPress’ backend. Et problem, da jeg ikke ønsker at alle mine brugere, som skal kunne oprette forms, skal være administratorer.

Da jeg ledte efter en måde hvorpå man kunne ændre hvilke brugere der havde adgang til hvad i deres plugin, fandt jeg ud af at det i skrivende stund kun er muligt ved at hægte sig på filtrene i WordPress. Så det måtte jeg jo gøre.

I mit tilfælde ønskede jeg at editors og admins kunne oprette og vedligeholde forms. Skal jeg ramme begge, skal jeg finde en egenskab som disse to roller har til fælles. “edit_others_posts” er en sådan egenskab som kun Editors og Admins deler. Det er derfor en fin egenskab at sortere efter. Se evt. Capability vs. Role table for andre egenskaber at sorter efter.

Min endelige løsning blev de følgende linjers kode. Disse filtre tillader mine editors at oprette nye forms. Dertil har jeg tilføjet tilladelser til nogle af de undermenuer vi i vores tilfælde havde brug for at editors havde adgang til.

function squazz_change_ninja_forms_capabilities_filter( ) {
   return 'edit_others_posts';
}
add_filter( 'ninja_forms_admin_menu_capabilities', 'squazz_change_ninja_forms_capabilities_filter' ); // Show Ninja Forms menu
add_filter( 'ninja_forms_admin_add_new_capabilities', 'squazz_change_ninja_forms_capabilities_filter' ); // Show "Add New" submenu
add_filter( 'ninja_forms_admin_all_forms_capabilities', 'squazz_change_ninja_forms_capabilities_filter' ); // Show "All Forms" submenu
add_filter( 'ninja_forms_admin_submissions_capabilities', 'squazz_change_ninja_forms_capabilities_filter' ); // Show "Submissions" submenu
add_filter( 'ninja_forms_admin_import_export_capabilities', 'squazz_change_ninja_forms_capabilities_filter' ); // Show "Import / Export" submenu

Det hele kan laves til et plugin. I så fald skal vores funktion omskrives lidt:

function squazz_change_ninja_forms_capabilities_filter( $capabilities ) {
   $capabilities = 'edit_others_posts';
   return $capabilities;
}

Filtrene skal da omskrives på følgende måde:

add_filter( 'ninja_forms_admin_menu_capabilities', 'squazz_change_ninja_forms_capabilities_filter' ); // Show Ninja Forms menu

Tjek Writing a Plugin hvis du ikke har helt styr på hvordan du laver et plugin.