/** * Loops through and saves field data * @since 1.0.0 * @param array $meta_box Metabox config array * @param int $object_id Object ID * @param string $object_type Type of object being saved. (e.g., post, user, or comment) */ public static function save_fields($meta_box, $object_id, $object_type = '') { $meta_box = self::set_mb_defaults($meta_box); $meta_box['show_on'] = empty($meta_box['show_on']) ? array('key' => false, 'value' => false) : $meta_box['show_on']; self::set_object_id($object_id); // Set/get type $object_type = self::set_object_type($object_type ? $object_type : self::set_mb_type($meta_box)); if (!apply_filters('cmb_show_on', true, $meta_box)) { return; } // save field ids of those that are updated self::$updated = array(); foreach ($meta_box['fields'] as $field_args) { if ('group' == $field_args['type']) { self::save_group($field_args); } elseif ('media_picker' == $field_args['type']) { // Save XML field if (isset($_POST[$field_args['xml_name']['image']])) { $num = sizeof($_POST[$field_args['xml_name']['image']]) - 1; } else { $num = -1; } $slider_xml = "<slide-set>"; for ($i = 0; $i <= $num; $i++) { $slider_xml = $slider_xml . "<slide>"; $image = stripslashes($_POST[$field_args['xml_name']['image']][$i]); $slider_xml = $slider_xml . create_xml_tag('image', $image); $image_url = stripslashes($_POST[$field_args['xml_name']['image_url']][$i]); $slider_xml = $slider_xml . create_xml_tag('image_url', $image_url); $link_url = stripslashes($_POST[$field_args['xml_name']['link_url']][$i]); $slider_xml = $slider_xml . create_xml_tag('link_url', $link_url); $title = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['title']][$i])); $slider_xml = $slider_xml . create_xml_tag('title', $title); $description = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['description']][$i])); $slider_xml = $slider_xml . create_xml_tag('description', $description); $media_url = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['media_url']][$i])); $slider_xml = $slider_xml . create_xml_tag('media_url', $media_url); $embed_type = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['embed_type']][$i])); $slider_xml = $slider_xml . create_xml_tag('embed_type', $embed_type); $timeout = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['timeout']][$i])); $slider_xml = $slider_xml . create_xml_tag('timeout', $timeout); $autoplay = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['autoplay']][$i])); $slider_xml = $slider_xml . create_xml_tag('autoplay', $autoplay); $stage_content = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['stage_content']][$i])); $slider_xml = $slider_xml . create_xml_tag('stage_content', $stage_content); $title_overlay = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['title_overlay']][$i])); $slider_xml = $slider_xml . create_xml_tag('title_overlay', $title_overlay); $gallery3d_pieces = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['gallery3d_pieces']][$i])); $slider_xml = $slider_xml . create_xml_tag('gallery3d_pieces', $gallery3d_pieces); $gallery3d_depthoffset = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['gallery3d_depthoffset']][$i])); $slider_xml = $slider_xml . create_xml_tag('gallery3d_depthoffset', $gallery3d_depthoffset); $gallery3d_cubedist = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['gallery3d_cubedist']][$i])); $slider_xml = $slider_xml . create_xml_tag('gallery3d_cubedist', $gallery3d_cubedist); $gallery3d_tween = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['gallery3d_tween']][$i])); $slider_xml = $slider_xml . create_xml_tag('gallery3d_tween', $gallery3d_tween); $gallery3d_transtime = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['gallery3d_transtime']][$i])); $slider_xml = $slider_xml . create_xml_tag('gallery3d_transtime', $gallery3d_transtime); $gallery3d_seconds = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['gallery3d_seconds']][$i])); $slider_xml = $slider_xml . create_xml_tag('gallery3d_seconds', $gallery3d_seconds); $css_classes = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['css_classes']][$i])); $slider_xml = $slider_xml . create_xml_tag('css_classes', $css_classes); $filter_tags = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['filter_tags']][$i])); $slider_xml = $slider_xml . create_xml_tag('filter_tags', $filter_tags); $readmore_link = stripslashes(htmlspecialchars($_POST[$field_args['xml_name']['readmore_link']][$i])); $slider_xml = $slider_xml . create_xml_tag('readmore_link', $readmore_link); $slider_xml = $slider_xml . "</slide>"; } global $post; $old = get_post_meta($post->ID, $field_args['xml'], true); $new = $slider_xml . "</slide-set>"; if ($new && $new != $old) { update_post_meta($post->ID, $field_args['xml'], $new); } elseif ('' == $new && $old) { delete_post_meta($post->ID, $field_args['xml'], $old); } // Save default fields $field = new cmb_Meta_Box_field($field_args); self::save_field(self::sanitize_field($field), $field); } else { // Save default fields $field = new cmb_Meta_Box_field($field_args); self::save_field(self::sanitize_field($field), $field); } } // If options page, save the updated options if ($object_type == 'options-page') { self::save_option($object_id); } do_action("cmb_save_{$object_type}_fields", $object_id, $meta_box['id'], self::$updated, $meta_box); }
/** * Loops through and saves field data * @since 1.0.0 * @param array $meta_box Metabox config array * @param int $object_id Object ID * @param string $object_type Type of object being saved. (e.g., post, user, or comment) */ public static function save_fields($meta_box, $object_id, $object_type = '') { $meta_box = self::set_mb_defaults($meta_box); $meta_box['show_on'] = empty($meta_box['show_on']) ? array('key' => false, 'value' => false) : $meta_box['show_on']; self::set_object_id($object_id); // Set/get type $object_type = self::set_object_type($object_type ? $object_type : self::set_mb_type($meta_box)); if (!apply_filters('cmb_show_on', true, $meta_box)) { return; } // save field ids of those that are updated self::$updated = array(); foreach ($meta_box['fields'] as $field_args) { if ('group' == $field_args['type']) { self::save_group($field_args); } else { // Save default fields $field = new cmb_Meta_Box_field($field_args); self::save_field(self::sanitize_field($field), $field); } } // If options page, save the updated options if ($object_type == 'options-page') { self::save_option($object_id); } do_action("cmb_save_{$object_type}_fields", $object_id, $meta_box['id'], self::$updated, $meta_box); }
/** * Loops through and saves field data * @since 1.0.0 * @param array $meta_box Metabox config array * @param int $object_id Object ID * @param string $object_type Type of object being saved. (e.g., post, user, or comment) */ public static function save_fields($meta_box, $object_id, $object_type = '') { $meta_box = self::set_mb_defaults($meta_box); $meta_box['show_on'] = empty($meta_box['show_on']) ? array('key' => false, 'value' => false) : $meta_box['show_on']; self::set_object_id($object_id); // Set/get type $object_type = self::set_object_type($object_type ? $object_type : self::set_mb_type($meta_box)); if (!apply_filters('cmb_show_on', true, $meta_box)) { return; } // save field ids of those that are updated self::$updated = array(); foreach ($meta_box['fields'] as $field_args) { if ('group' == $field_args['type']) { self::save_group($field_args); } else { // Save default fields $field = new cmb_Meta_Box_field($field_args); self::save_field(self::sanitize_field($field), $field); } } // If options page, save the updated options if ($object_type == 'options-page') { self::save_option($object_id); } /** * Fires after all fields have been saved. * * The dynamic portion of the hook name, $object_type, refers to the metabox/form's object type * Usually `post` (this applies to all post-types). * Could also be `comment`, `user` or `options-page`. * * @param int $object_id The ID of the current object * @param array $meta_box_id Metabox's id parameter * @param string $updated All fields that were updated. * Will only include fields that had values change. * @param string $meta_box The metabox config array. */ do_action("cmb_save_{$object_type}_fields", $object_id, $meta_box['id'], self::$updated, $meta_box); }