Example #1
0
 /**
  * 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;
 }