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; }
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(); }
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; }
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}"); } }
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; }
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')); }
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}"); } }
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(); }
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); }
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; }
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(); }
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')); }
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); } }
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(); }
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}"); } }
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; }
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}"); } }
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; }
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)); }