function meta_box($user) { if ($this->title) { echo '<h3>' . $this->title . '</h3>'; } $defaults = $this->fields(); if (empty($defaults) || !is_array($defaults)) { return; } $new_fields = dp_instance_fields($defaults, 'user_meta', $user); wp_nonce_field($this->nonce_action, $this->nonce); echo dp_form_fields($new_fields); }
function dp_instance_fields($fields, $instance_type = '', $object = '') { foreach ($fields as $field) { global $post; if (!empty($field['fields']) && $field['type'] == 'fields') { $field['fields'] = dp_instance_fields($field['fields'], $instance_type); } else { if (empty($field['name'])) { $new_fields[] = $field; continue; } $name = $field['name']; $name = str_replace('[]', '', $name); $name = str_replace(']', '', $name); $name = explode('[', $name); if ($instance_type == 'post_meta') { $value = get_post_meta($post->ID, $name[0], true); } elseif ($instance_type == 'user_meta') { $value = get_user_meta($object->ID, $name[0], true); } elseif ($instance_type == 'term_meta') { $value = get_term_meta($object->term_id, $name[0], true); } else { $value = get_option($name[0]); } unset($name[0]); foreach ($name as $n) { if (empty($value[$n])) { $value = ''; break; } $value = $value[$n]; } $field['value'] = $value; } $new_fields[] = $field; } return $new_fields; }