/** * Get taxonomy field * * @return AbstractField * @throws WpException */ public function get_field() { if ($this->_field == null) { if ($this->_field_init == null) { $this->_field = new Text(); } elseif (is_string($this->_field_init)) { $this->_field = FieldFactory::build($this->_field_init); } elseif (Action::is_callable($this->_field_init)) { $this->_field = Action::execute($this->_field_init); if (!$this->_field instanceof AbstractField) { throw new WpException("Option \"{$this->_title}\" init function must return a Field."); } } else { throw new WpException("Invalid field type."); } $this->_field->set_name($this->_key); $this->_field->set_label($this->_title); } return $this->_field; }
/** * @param AbstractField $field * * @return string */ protected function _render_field(AbstractField $field) { $css_classes = $field->get_classes(); if ($field instanceof Text && in_array('large-text', $css_classes)) { $key = array_search('large-text', $css_classes); $css_classes[$key] = 'regular-text'; $field->set_classes($css_classes); } return sprintf('<td>%s</td>', $field->render_field()); }
protected function _get_field_value(AbstractField $field, $post, $index) { if (!$post) { return null; } $values = get_post_meta($post->ID, $field->get_name(), true); if (!is_array($values)) { if (empty($this->_defaults) || !isset($this->_defaults[$field->get_name()])) { return null; } $values = $this->_defaults[$field->get_name()]; } return array_key_exists($index, $values) ? $values[$index] : null; }
protected function _render_for_attribute() { return ' for="' . $this->_field->get_id() . '"'; }