/** * Loops through and displays fields * @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 show_form($meta_box, $object_id = 0, $object_type = '') { // Set/get type $object_type = self::set_object_type($object_type ? $object_type : self::set_mb_type($meta_box)); // Set/get ID $object_id = self::set_object_id($object_id ? $object_id : self::get_object_id()); // get box types $types = cpmb_Meta_Box_types::get(); // Use nonce for verification echo "\n<!-- Begin CPMB Fields -->\n"; wp_nonce_field(self::nonce(), 'wp_meta_box_nonce', false, true); do_action('cpmb_before_table', $meta_box, $object_id, $object_type); echo '<div class="cpmb_metabox cpmb-table cpmb-clearfix">'; foreach ($meta_box['fields'] as $field) { if (isset($field['on_front']) && $field['on_front'] == false) { continue; } self::$field =& $field; // Set up blank or default values for empty ones if (!isset($field['name'])) { $field['name'] = ''; } if (!isset($field['desc'])) { $field['desc'] = ''; } if (!isset($field['std'])) { $field['std'] = ''; } // filter default value $field['std'] = apply_filters('cpmb_std_filter', $field['std'], $field, $object_id, $object_type); if ('file' == $field['type'] && !isset($field['allow'])) { $field['allow'] = array('url', 'attachment'); } if ('file' == $field['type'] && !isset($field['save_id'])) { $field['save_id'] = false; } if ('multicheck' == $field['type']) { $field['multiple'] = true; } // Allow an override for the field's value // (assuming no one would want to save 'cpmb_override_val' as a value) $meta = apply_filters('cpmb_override_meta_value', 'cpmb_override_val', $object_id, $field, $object_type); // If no override, get our meta if ($meta === 'cpmb_override_val') { $meta = get_metadata($object_type, $object_id, $field['id'], 'multicheck' != $field['type']); } $repeat = isset($field['repeatable']) && $field['repeatable']; $repeatclass = $repeat ? ' cpmb-repeat' : ''; $repeatmethod = $repeat ? '_repeat' : ''; $class = ''; if (isset($more_field)) { $class = ' cpmb-hide-field'; } if ($field['type'] == "more_fields") { $more_field = ''; } echo '<div class="cpmb-type-' . sanitize_html_class($field['type']) . ' cpmb_id_' . sanitize_html_class($field['id']) . $repeatclass . ' cpmb-row cpmb-clearfix' . $class . ' ">'; if ($field['type'] == "title" || $field['type'] == "more_fields") { echo '<div class="cpmb-col">'; } else { if (isset($meta_box['show_names']) && $meta_box['show_names'] == true) { echo '<div class="cpmb-col cpmb-field-label"><label for="', $field['id'], '">', $field['name'], '</label></div>'; } else { echo '<label style="display:none;" for="', $field['id'], '">', $field['name'], '</label>'; } echo '<div class="cpmb-col">'; } echo empty($field['before']) ? '' : $field['before']; call_user_func(array($types, $field['type'] . $repeatmethod), $field, $meta, $object_id, $object_type); echo empty($field['after']) ? '' : $field['after']; echo '</div></div>'; } echo '</div>'; do_action('cpmb_after_table', $meta_box, $object_id, $object_type); echo "\n<!-- End CPMB Fields -->\n"; }