This needs to be implemented at the widget code level for which the code in the question you start with is not a good match.
The easiest way might be to decouple the widget content editing and the widget placement. You can set up a specific page in which it is possible to manage the content of the widget, and set the access level to that page to one which editor has. This way all the admin has to do is to place the widget at the sidebar and the editor can change the content without admin’s intervention.
Related Posts:
- Give Editor Access To Sidebar
- Role that can edit only widgets, not other theme options
- prevent custom widget file names from showing in Appearance > Editor
- Show modal only to some roles
- Show editor widgets only on pages that use a specific template?
- Programmatically add widgets to sidebars
- WordPress 3.8 – Dashboard 1 Column Screen Options
- Executing Javascript When a Widget is Added in the Backend
- Loading scripts only if a particular shortcode or widget is present
- Limit number of Widgets in Sidebars
- How Can I Add the “Insert From URL” Tab to a Custom 3.5 Media Uploader?
- How to load Widget javascript + css files only if used?
- Where is the content of widgets stored in mysql table
- Hide specific categories from category widget
- changing wp-admin/widgets.php
- Add class to before_widget from within a custom widget
- How can I use the built in WordPress “browse link” functionality?
- Is there any way to dynamically alter widget titles?
- Translate widget titles using qTranslate plugin
- Code for Recent Posts Widget
- Get number of widgets in sidebar
- Text Widget creates a
- Can a widget in the Customizer be “single-use” (i.e. disabled after 1 instance has been added)?
- Allow Editors to edit pending posts but not draft ones
- check if registered sidebar is active & has widget content
- How to edit widgets in WordPress
- dynamically add scripts to WP_Widget widget() method
- Allow user to “edit_others_posts” to save only, not publish
- Extend WordPress 3.8 Site Activity Dashboard Widget to include more comments
- How to use is_active_widget?
- Get a list of all Widgets registered in WordPress admin widgets-area
- Modifying the default search widget
- Adding iframe Content to Sidebar Widget
- Enabling jquery when dragging available widget to sidebar area
- How Do I Add Custom CSS To Only Certain Widgets
- Get Widget Instance inside Widget
- Show post tags in a widget
- Author template, filter sidebar widgets by author?
- Prevent widgets removal
- Add the sidebar/widget editor to the post edit screen?
- WordPress 4.8: Using multiple WYSIWYG-Editors with media inside of Widgets how to?
- Does the number of widgets installed affect website performance?
- WP_Widget deprecated error in WordPress V4.3
- What is the quickest way to make a widget?
- How to display custom widget anywhere
- Show Woocommerce minicart widget in checkout page sidebar? And, how to make this update secure by overriding widget?
- Get page IDs based on which template they are using?
- Changes in widget customizer not triggering ‘save and publish’
- Add filter to blogroll widget
- Widget Options Not saving
- Indexes of widgets instances starts with ‘2’ in ‘wp_options’ table
- How to use wp_dequeue_style() for style enqueued in WP_Widget class
- Complex widget form UI – examples and best practices
- How do i manually place a widget code
- How to override the wordpress default widget markup
- Why is the $old_instance needed for the widget update function?
- Embed iframe or html page into dashboard widget
- Storing custom dashboard widget options in wordpress
- Get sidebar parameters (before_widget, before_title, etc.) from within a widget
- How to enable edit button in the theme’s customize UI?
- Prevent second widget activation
- How can I add links to widget titles?
- How to refresh Theme Customizer after change color inside wpColorPicker?
- How to add image uploader to a custom widget?
- PHP Coding Standards, Widgets and Sanitization
- Different widgets on different page templates?
- How to Remove All Widgets from Dashboard?
- Widgets not displaying in theme customizer
- $post>ID displays wrong post ID
- Register multiple sidebars
- Is there a way to add more tags to the tag cloud?
- Modify recent post sidebar to show post thumbs with out plugins
- Loop through widgets in sidebar
- How do I rebind event after widget save
- Programmatically edit the text of a widget
- How to add color picker to widgets?
- Where to find the source code of a widget?
- How to add author details in the post sidebar?
- How to delete cached transients from a widget instance properly?
- What is this instance variable doing in the Widgets class
- How to add a filter to all widget output
- Determining a Widget Instance and Sidebar Location?
- How to Validate Widget Input
- How to build widget with arrays inside arrays?
- Randomize widgets displayed in my sidebar [duplicate]
- How do I save data from submitted form from widget
- Calling static method in the Widget Class
- Has anyone managed to integrate the wp_editor inside a widget?
- Video Embed in Sidebar Widget with Links to Others in Category
- Remove before_widget / after_widget content from Wp_Widget_Text
- How to add Custom Fields to Settings in Widget Options for all Registered Widgets?
- Why Can’t wp_editor Be Used in a Custom Widget?
- Shortcode from a widget is wrapped in unwanted element
- Allow editors access to added plugins
- link wordpress and stackoverflow
- How to listen to color changes on the color picker?
- Remove All Widgets from Sidebar
- Woocommerce Product Category Widget – hide categories that have no products in stock [closed]
- Where to get the unsaved list of widgets in customizer?
- Disable text tab on WordPress text-editor