Example #1
0
 function save_attachment($post, $attachment)
 {
     // bail early if not valid nonce
     if (!acf_verify_nonce('attachment')) {
         return $post;
     }
     // validate and save
     if (acf_validate_save_post(true)) {
         acf_save_post($post['ID']);
     }
     // return
     return $post;
 }
Example #2
0
function acf_form_head()
{
    // verify nonce
    if (acf_verify_nonce('acf_form')) {
        // validate data
        if (acf_validate_save_post(true)) {
            // form
            $GLOBALS['acf_form'] = acf_extract_var($_POST, '_acf_form');
            $GLOBALS['acf_form'] = @json_decode(base64_decode($GLOBALS['acf_form']), true);
            // validate
            if (empty($GLOBALS['acf_form'])) {
                return;
            }
            // vars
            $post_id = acf_maybe_get($GLOBALS['acf_form'], 'post_id', 0);
            // allow for custom save
            $post_id = apply_filters('acf/pre_save_post', $post_id, $GLOBALS['acf_form']);
            // save
            acf_save_post($post_id);
            // vars
            $return = acf_maybe_get($GLOBALS['acf_form'], 'return', '');
            // redirect
            if ($return) {
                // update %placeholders%
                $return = str_replace('%post_url%', get_permalink($post_id), $return);
                // redirect
                wp_redirect($return);
                exit;
            }
        }
        // if
    }
    // if
    // load acf scripts
    acf_enqueue_scripts();
}
Example #3
0
 function save_post($post_id)
 {
     // do not save if this is an auto save routine
     if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
         return $post_id;
     }
     // verify and remove nonce
     if (!acf_verify_nonce('post', $post_id)) {
         return $post_id;
     }
     // validate and save
     if (get_post_status($post_id) == 'publish') {
         if (acf_validate_save_post(true)) {
             acf_save_post($post_id);
         }
     } else {
         acf_save_post($post_id);
     }
     // return
     return $post_id;
 }
Example #4
0
 function save_term($term_id, $tt_id, $taxonomy)
 {
     // verify and remove nonce
     if (!acf_verify_nonce('taxonomy')) {
         return $term_id;
     }
     // save data
     if (acf_validate_save_post(true)) {
         acf_save_post("{$taxonomy}_{$term_id}");
     }
 }
Example #5
0
 function save_post($post_id, $post)
 {
     // bail ealry if no allowed to save this post type
     if (!$this->allow_save_post($post)) {
         return $post_id;
     }
     // ensure saving to the correct post
     if (!acf_verify_nonce('post', $post_id)) {
         return $post_id;
     }
     // validate for published post (allow draft to save without validation)
     if (get_post_status($post_id) == 'publish') {
         // show errors
         acf_validate_save_post(true);
     }
     // save
     acf_save_post($post_id);
     // return
     return $post_id;
 }
Example #6
0
 function admin_load()
 {
     // globals
     global $plugin_page;
     // set currrent
     $this->view['slug'] = $plugin_page;
     // verify and remove nonce
     if (acf_verify_nonce('options')) {
         // save data
         if (acf_validate_save_post(true)) {
             // get post_id (allow lang modification)
             $post_id = acf_get_valid_post_id('options');
             // save
             acf_save_post($post_id);
             // redirect
             wp_redirect(admin_url("admin.php?page={$plugin_page}&message=1"));
             exit;
         }
     }
     add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
 }
Example #7
0
 function save_user($user_id)
 {
     // verify and remove nonce
     if (!acf_verify_nonce('user')) {
         return $user_id;
     }
     // save data
     if (acf_validate_save_post(true)) {
         acf_save_post("user_{$user_id}");
     }
 }
Example #8
0
 function ajax_update_attachment()
 {
     // validate
     if (!wp_verify_nonce($_REQUEST['nonce'], 'acf_nonce')) {
         wp_send_json_error();
     }
     if (empty($_REQUEST['attachments'])) {
         wp_send_json_error();
     }
     foreach ($_REQUEST['attachments'] as $id => $changes) {
         if (!current_user_can('edit_post', $id)) {
             wp_send_json_error();
         }
         $post = get_post($id, ARRAY_A);
         if ('attachment' != $post['post_type']) {
             wp_send_json_error();
         }
         if (isset($changes['title'])) {
             $post['post_title'] = $changes['title'];
         }
         if (isset($changes['caption'])) {
             $post['post_excerpt'] = $changes['caption'];
         }
         if (isset($changes['description'])) {
             $post['post_content'] = $changes['description'];
         }
         if (isset($changes['alt'])) {
             $alt = wp_unslash($changes['alt']);
             if ($alt != get_post_meta($id, '_wp_attachment_image_alt', true)) {
                 $alt = wp_strip_all_tags($alt, true);
                 update_post_meta($id, '_wp_attachment_image_alt', wp_slash($alt));
             }
         }
         /** This filter is documented in wp-admin/includes/media.php */
         $post = apply_filters('attachment_fields_to_save', $post, $changes);
         // save post
         wp_update_post($post);
         // save meta
         acf_save_post($id);
     }
     wp_send_json_success();
 }
Example #9
0
 function save_term($term_id, $tt_id, $taxonomy)
 {
     // verify and remove nonce
     if (!acf_verify_nonce('taxonomy')) {
         return $term_id;
     }
     // valied and show errors
     acf_validate_save_post(true);
     // save
     acf_save_post('term_' . $term_id);
 }
Example #10
0
 function save_post($post_id, $post)
 {
     // do not save if this is an auto save routine
     if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
         return $post_id;
     }
     // bail early if is acf-field-group or acf-field
     if (in_array($post->post_type, array('acf-field', 'acf-field-group'))) {
         return $post_id;
     }
     // verify and remove nonce
     if (!acf_verify_nonce('post', $post_id)) {
         return $post_id;
     }
     // validate and save
     if (get_post_status($post_id) == 'publish') {
         if (acf_validate_save_post(true)) {
             acf_save_post($post_id);
         }
     } else {
         acf_save_post($post_id);
     }
     // return
     return $post_id;
 }
Example #11
0
function acf_form_head()
{
    // verify nonce
    if (acf_verify_nonce('acf_form')) {
        // validate data
        if (acf_validate_save_post(true)) {
            // form
            $form = acf_extract_var($_POST, '_acf_form');
            $form = @json_decode(base64_decode($form), true);
            // validate
            if (empty($form)) {
                return;
            }
            // allow for custom save
            $form['post_id'] = apply_filters('acf/pre_save_post', $form['post_id'], $form);
            // save
            acf_save_post($form['post_id']);
            // redirect
            if (!empty($form['return'])) {
                // update %placeholders%
                $form['return'] = str_replace('%post_url%', get_permalink($form['post_id']), $form['return']);
                // redirect
                wp_redirect($form['return']);
                exit;
            }
        }
        // if
    }
    // if
    // load acf scripts
    acf_enqueue_scripts();
}
Example #12
0
 function admin_load()
 {
     // globals
     global $plugin_page;
     // vars
     $this->page = acf_get_options_page($plugin_page);
     // verify and remove nonce
     if (acf_verify_nonce('options')) {
         // save data
         if (acf_validate_save_post(true)) {
             // get post_id (allow lang modification)
             $post_id = acf_get_valid_post_id($this->page['post_id']);
             // set autoload
             acf_update_setting('autoload', $this->page['autoload']);
             // save
             acf_save_post($post_id);
             // redirect
             wp_redirect(admin_url("admin.php?page={$plugin_page}&message=1"));
             exit;
         }
     }
     // actions
     add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
 }
Example #13
0
 function customize_save($customizer)
 {
     // get widgets
     $widgets = $this->get_customizer_widgets($customizer);
     // bail ealry if no widgets
     if (empty($widgets)) {
         return;
     }
     // append values
     foreach ($widgets as $widget) {
         // bail early if no acf_value
         if (!$widget->acf) {
             continue;
         }
         // fake post data
         $_POST['acf'] = $widget->acf['values'];
         // save
         acf_save_post($widget->acf['ID']);
         // get widget base
         $id_data = $widget->id_data();
         // remove [acf] data from saved widget array
         add_filter('pre_update_option_' . $id_data['base'], array($this, 'pre_update_option'), 10, 3);
     }
 }
Example #14
0
 function ajax_update_attachment()
 {
     // validate nonce
     if (!wp_verify_nonce($_POST['nonce'], 'acf_nonce')) {
         wp_send_json_error();
     }
     // bail early if no attachments
     if (empty($_POST['attachments'])) {
         wp_send_json_error();
     }
     // loop over attachments
     foreach ($_POST['attachments'] as $id => $changes) {
         if (!current_user_can('edit_post', $id)) {
             wp_send_json_error();
         }
         $post = get_post($id, ARRAY_A);
         if ('attachment' != $post['post_type']) {
             wp_send_json_error();
         }
         if (isset($changes['title'])) {
             $post['post_title'] = $changes['title'];
         }
         if (isset($changes['caption'])) {
             $post['post_excerpt'] = $changes['caption'];
         }
         if (isset($changes['description'])) {
             $post['post_content'] = $changes['description'];
         }
         if (isset($changes['alt'])) {
             $alt = wp_unslash($changes['alt']);
             if ($alt != get_post_meta($id, '_wp_attachment_image_alt', true)) {
                 $alt = wp_strip_all_tags($alt, true);
                 update_post_meta($id, '_wp_attachment_image_alt', wp_slash($alt));
             }
         }
         // save post
         wp_update_post($post);
         /** This filter is documented in wp-admin/includes/media.php */
         // - seems off to run this filter AFTER the update_post function, but there is a reason
         // - when placed BEFORE, an empty post_title will be populated by WP
         // - this filter will still allow 3rd party to save extra image data!
         $post = apply_filters('attachment_fields_to_save', $post, $changes);
         // save meta
         acf_save_post($id);
     }
     // return
     wp_send_json_success();
 }
Example #15
0
 function save_widget()
 {
     // bail early if no nonce
     if (!acf_verify_nonce('widget')) {
         return;
     }
     // vars
     $id = acf_maybe_get($_POST, 'widget-id');
     // save data
     if ($id && acf_validate_save_post()) {
         acf_save_post("widget_{$id}");
     }
 }
Example #16
0
 function widget_update_callback($instance, $new_instance, $old_instance, $widget)
 {
     // bail early if no nonce
     if (!acf_verify_nonce('widget')) {
         return $instance;
     }
     // save
     if (acf_validate_save_post()) {
         acf_save_post("widget_{$widget->id}");
     }
     // return
     return $instance;
 }
Example #17
0
 function save_comment($comment_id)
 {
     // bail early if not valid nonce
     if (!acf_verify_nonce('comment')) {
         return $comment_id;
     }
     // validate and save
     if (acf_validate_save_post(true)) {
         acf_save_post("comment_{$comment_id}");
     }
 }
Example #18
0
 function save_widget($instance, $new_instance, $old_instance, $widget)
 {
     // verify and remove nonce
     if (!acf_verify_nonce('widget')) {
         return $instance;
     }
     // save data
     if (acf_validate_save_post()) {
         acf_save_post("widget_{$widget->id}");
     }
     // return
     return $instance;
 }
Example #19
0
 function admin_load()
 {
     // globals
     global $plugin_page;
     // vars
     $this->page = acf_get_options_page($plugin_page);
     // verify and remove nonce
     if (acf_verify_nonce('options')) {
         // save data
         if (acf_validate_save_post(true)) {
             // get post_id (allow lang modification)
             $post_id = acf_get_valid_post_id($this->page['post_id']);
             // set autoload
             acf_update_setting('autoload', $this->page['autoload']);
             // save
             acf_save_post($post_id);
             // redirect
             wp_redirect(add_query_arg(array('message' => '1')));
             exit;
         }
     }
     // load acf scripts
     acf_enqueue_scripts();
     // actions
     add_action('acf/input/admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
     add_action('acf/input/admin_head', array($this, 'admin_head'));
     // add columns support
     add_screen_option('layout_columns', array('max' => 2, 'default' => 2));
 }