Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-content
/
plugins
/
advanced-custom-fields
/
includes
/
forms
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php if (!class_exists('acf_form_widget')) { class acf_form_widget { function __construct() { $this->preview_values = array(); $this->preview_reference = array(); $this->preview_errors = array(); add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts')); add_action('in_widget_form', array($this, 'edit_widget'), 10, 3); add_action('acf/validate_save_post', array($this, 'acf_validate_save_post'), 5); add_filter('widget_update_callback', array($this, 'save_widget'), 10, 4); } function admin_enqueue_scripts() { if (acf_is_screen('widgets') || acf_is_screen('customize')) { } else { return; } acf_enqueue_scripts(); add_action('acf/input/admin_footer', array($this, 'admin_footer'), 1); } function acf_validate_save_post() { if (!isset($_POST['_acf_widget_id'])) { return; } $id = $_POST['_acf_widget_id']; $number = $_POST['_acf_widget_number']; $prefix = $_POST['_acf_widget_prefix']; acf_validate_values($_POST[$id][$number]['acf'], $prefix); } function edit_widget($widget, $return, $instance) { $post_id = 0; $prefix = 'widget-' . $widget->id_base . '[' . $widget->number . '][acf]'; if ($widget->number !== '__i__') { $post_id = "widget_{$widget->id}"; } $field_groups = acf_get_field_groups(array('widget' => $widget->id_base)); if (!empty($field_groups)) { acf_form_data(array('screen' => 'widget', 'post_id' => $post_id, 'widget_id' => 'widget-' . $widget->id_base, 'widget_number' => $widget->number, 'widget_prefix' => $prefix)); echo '<div class="acf-widget-fields acf-fields -clear">'; foreach ($field_groups as $field_group) { $fields = acf_get_fields($field_group); if (empty($fields)) { continue; } acf_prefix_fields($fields, $prefix); acf_render_fields($fields, $post_id, 'div', $field_group['instruction_placement']); } echo '</div>'; if ($widget->updated) { ?> <script type="text/javascript"> (function($) { acf.doAction('append', $('[id^="widget"][id$="<?php echo $widget->id; ?>"]') ); })(jQuery); </script> <?php } } } function save_widget($instance, $new_instance, $old_instance, $widget) { if (!(function_exists('wp_is_json_request') && wp_is_json_request())) { if (!acf_verify_nonce('widget')) { return $instance; } } if (isset($_POST['wp_customize']) || !isset($new_instance['acf'])) { return $instance; } acf_save_post("widget_{$widget->id}", $new_instance['acf']); return $instance; } function admin_footer() { ?> <script type="text/javascript"> (function($) { // vars acf.set('post_id', 'widgets'); // Only initialize visible fields. acf.addFilter('find_fields', function( $fields ){ // not templates $fields = $fields.not('#available-widgets .acf-field'); // not widget dragging in $fields = $fields.not('.widget.ui-draggable-dragging .acf-field'); // return return $fields; }); // on publish $('#widgets-right').on('click', '.widget-control-save', function( e ){ // vars var $button = $(this); var $form = $button.closest('form'); // validate var valid = acf.validateForm({ form: $form, event: e, reset: true }); // if not valid, stop event and allow validation to continue if( !valid ) { e.preventDefault(); e.stopImmediatePropagation(); } }); // show $('#widgets-right').on('click', '.widget-top', function(){ var $widget = $(this).parent(); if( $widget.hasClass('open') ) { acf.doAction('hide', $widget); } else { acf.doAction('show', $widget); } }); $(document).on('widget-added', function( e, $widget ){ // - use delay to avoid rendering issues with customizer (ensures div is visible) setTimeout(function(){ acf.doAction('append', $widget ); }, 100); }); })(jQuery); </script> <?php } } new acf_form_widget(); }