• Right now it is hardcoded to be manage_options, which isn’t always desirable.

    Something like a Filter to change it would be sufficient since I would figure only developers would want access to this anyway.

    This is how I was able to get it working in the meantime, but I had to hardcode the directory name of the plugin which has its own issues as well.

    add_action( 'admin_menu', function() {
    	
    	// Remove ones with manage_options cap
    	
    	remove_menu_page( 'webappick-product-feed-for-woocommerce/admin/class-woo-feed-admin.php' );
    	
    	remove_submenu_page( 'webappick-product-feed-for-woocommerce/admin/class-woo-feed-admin.php', 'webappick-product-feed-for-woocommerce/admin/class-woo-feed-admin.php' );
    	
    	remove_submenu_page( 'webappick-product-feed-for-woocommerce/admin/class-woo-feed-admin.php', 'woo_feed_manage_feed' );
    	
    	remove_submenu_page( 'webappick-product-feed-for-woocommerce/admin/class-woo-feed-admin.php', 'woo_feed_config_feed' );
    	
    	remove_submenu_page( 'webappick-product-feed-for-woocommerce/admin/class-woo-feed-admin.php', 'woo_feed_pro_vs_free' );
    	
    	// Re-add with our Cap
    	
    	add_menu_page( 
    		__('Woo Feed', 'woo-feed'), 
    		__('Woo Feed', 'woo-feed'), 
    		'woofeed_manage',  // Custom Capability
    		'webappick-product-feed-for-woocommerce/admin/class-woo-feed-admin.php', 
    		'woo_feed_generate_feed', 
    		'dashicons-rss'
    	);
    	
    	add_submenu_page( 
    		'webappick-product-feed-for-woocommerce/admin/class-woo-feed-admin.php', 
    		__('Make Feed', 'woo-feed'), 
    		__('Make Feed', 'woo-feed'), 
    		'woofeed_manage', 
    		'webappick-product-feed-for-woocommerce/admin/class-woo-feed-admin.php', 
    		'woo_feed_generate_feed'
    	);
    	
    	add_submenu_page( 
    		'webappick-product-feed-for-woocommerce/admin/class-woo-feed-admin.php', 
    		__('Manage Feeds', 'woo-feed'), 
    		__('Manage Feeds', 'woo-feed'), 
    		'woofeed_manage', 
    		'woo_feed_manage_feed', 
    		'woo_feed_manage_feed'
    	);
    	
    	add_submenu_page( 
    		'webappick-product-feed-for-woocommerce/admin/class-woo-feed-admin.php', 
    		__('Settings', 'woo-feed'), 
    		__('Settings', 'woo-feed'), 
    		'woofeed_manage', 
    		'woo_feed_config_feed', 
    		'woo_feed_config_feed'
    	);
    	
    	add_submenu_page( 
    		'webappick-product-feed-for-woocommerce/admin/class-woo-feed-admin.php', 
    		__('Premium', 'woo-feed'), 
    		__('Premium', 'woo-feed'), 
    		'woofeed_manage', 
    		'woo_feed_pro_vs_free', 
    		'woo_feed_pro_vs_free'
    	);
    	
    	global $_wp_submenu_nopriv;
    	global $plugin_page;
    	
    	$parent = get_admin_page_parent();
    	
    	// Fix Admin Menu Perms
    	// See user_can_access_admin_page(), and admin_menu versus _admin_menu hooks
    	// The _wp_submenu_nopriv Global gets set up before admin_menu fires off, but we need to hook in at admin_menu to remove the old version of the Menu Items
    	if ( current_user_can( 'woofeed_manage' ) ) {
    		
    		if ( isset( $_wp_submenu_nopriv[ $parent ][ $plugin_page ] ) ) {
    			
    			unset( $_wp_submenu_nopriv[ $parent ][ $plugin_page ] );
    			
    		}
    		
    	}
    	
    }, 11 );
    • This topic was modified 6 years, 9 months ago by d4mation. Reason: Clarity
  • The topic ‘Add ability to change Capability for the admin pages’ is closed to new replies.