• Resolved chevymanusa

    (@chevymanusa)


    Hello All,
    I am wanting to add capability for Wordfence (https://www.ads-software.com/plugins/wordfence/) to non-admin users.

    So far this is what I have found/tried.
    The wordfence.php file calls for two files:
    File Number 1: wordfenceConstants.php
    require_once(‘lib/wordfenceConstants.php’);
    From what I can tell the “Constants” file is 11 lines long and defines a few wordpress related items. To my knowledge nothing regarding users.
    File Number 2: wordfenceClass.php
    require_once(‘lib/wordfenceClass.php’);
    To me it appears this file should contain the information related to capabilities.
    I tired adding “update_core” , “admin_init” , “is_admin”, and “manage_options”.

    All of those were unsuccessful in allowing an non-admin access to the plugin.

    Any thoughts, comments, feed back would be much appreciated.
    Thank you in advance for your help in this matter.

    Regards,
    Chevy
    P.S. Keep up the good work on the plugin!

    https://www.ads-software.com/extend/plugins/user-role-editor/

Viewing 3 replies - 1 through 3 (of 3 total)
  • Plugin Author Vladimir Garagulya

    (@shinephp)

    You were near the things you search for. At wordfenceClass.php there is a method
    public static function admin_menus(), which defines plugin’s menus:

    add_submenu_page("Wordfence", "Scan", "Scan", "activate_plugins", "Wordfence", 'wordfence::menu_scan');
    		add_menu_page('Wordfence', 'Wordfence', 'activate_plugins', 'Wordfence', 'wordfence::menu_scan', wfUtils::getBaseURL() . 'images/wordfence-logo-16x16.png');
    		if(wfConfig::get('liveTrafficEnabled')){
    			add_submenu_page("Wordfence", "Live Traffic", "Live Traffic", "activate_plugins", "WordfenceActivity", 'wordfence::menu_activity');
    		}
    		add_submenu_page('Wordfence', 'Blocked IPs', 'Blocked IPs', 'activate_plugins', 'WordfenceBlockedIPs', 'wordfence::menu_blockedIPs');
    		add_submenu_page("Wordfence", "Country Blocking", "Country Blocking", "activate_plugins", "WordfenceCountryBlocking", 'wordfence::menu_countryBlocking');
    		add_submenu_page("Wordfence", "Scan Schedule", "Scan Schedule", "activate_plugins", "WordfenceScanSchedule", 'wordfence::menu_scanSchedule');
    		add_submenu_page("Wordfence", "Whois Lookup", "Whois Lookup", "activate_plugins", "WordfenceWhois", 'wordfence::menu_whois');
    		add_submenu_page("Wordfence", "Advanced Blocking", "Advanced Blocking", "activate_plugins", "WordfenceRangeBlocking", 'wordfence::menu_rangeBlocking');
    		add_submenu_page("Wordfence", "Options", "Options", "activate_plugins", "WordfenceSecOpt", 'wordfence::menu_options');

    As you can see all menu items are linked to the ‘activate_plugins’ user capability.

    Thread Starter chevymanusa

    (@chevymanusa)

    Thank you sir!
    That worked just fine.

    Awesome developers like you are why I love worpdress!

    Thanks again!

    Thread Starter chevymanusa

    (@chevymanusa)

    Important note, the file wfUtils.php also contains code to access the wordfence menu.

    public static function isAdmin(){
    		if(is_multisite()){
    			if(current_user_can('manage_network')){
    				return true;
    			}
    		} else {
    			if(current_user_can('manage_options')){
    				return true;
    			}
    		}
    		return false;
    	}

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Adding Capability for Wordfence to non-admin users.’ is closed to new replies.