/** * Show field HTML * Filters are put inside this method, not inside methods such as "meta", "html", "begin_html", etc. * That ensures the returned value are always been applied filters * This method is not meant to be overwritten in specific fields * * @param array $field * @param bool $saved */ public static function show($field, $saved) { $post = get_post(); $post_id = isset($post->ID) ? $post->ID : 0; $meta = self::call($field, 'meta', $post_id, $saved); $meta = self::filter('field_meta', $meta, $field, $saved); $begin = self::call($field, 'begin_html', $meta); $begin = self::filter('begin_html', $begin, $field, $meta); // Separate code for cloneable and non-cloneable fields to make easy to maintain // Cloneable fields if ($field['clone']) { $field_html = RWMB_Clone::html($meta, $field); } else { // Call separated methods for displaying each type of field $field_html = self::call($field, 'html', $meta); $field_html = self::filter('html', $field_html, $field, $meta); } $end = self::call($field, 'end_html', $meta); $end = self::filter('end_html', $end, $field, $meta); $html = self::filter('wrapper_html', "{$begin}{$field_html}{$end}", $field, $meta); // Display label and input in DIV and allow user-defined classes to be appended $classes = "rwmb-field rwmb-{$field['type']}-wrapper " . $field['class']; if ('hidden' === $field['type']) { $classes .= ' hidden'; } if (!empty($field['required'])) { $classes .= ' required'; } $outer_html = sprintf($field['before'] . '<div class="%s">%s</div>' . $field['after'], trim($classes), $html); $outer_html = self::filter('outer_html', $outer_html, $field, $meta); echo $outer_html; }