Give Editor Access To WordPress Sidebar

If you want to give the Editor Role access to editing the sidebar and it’s contents.

The edit_theme_options capability should allow the user to edit the sidebar as described on this page : http://codex.wordpress.org/Appearance_Widgets_SubPanel

Code to add to functions.php

$role = get_role('editor'); 
$role->add_cap('edit_theme_options');

or, you can use Members plugin to create/manage other roles and modify the capabilities.

http://wordpress.org/plugins/members/

This should work to prevent editor accessing themes or menus

function custom_admin_menu(){

    $user =new WP_User(get_current_user_id());if(!empty( $user->roles)&& is_array($user->roles)){foreach($user->roles as $role)
            $role = $role;}if($role =="editor"){ 
       remove_submenu_page('themes.php','themes.php');
       remove_submenu_page('themes.php','nav-menus.php');}}

add_action('admin_menu','custom_admin_menu');