/** * Get registered control fields * * @since 1.0.0 * @since 1.1.3 Using dirname( __FILE__ ) instead of __DIR__. * @since 1.2.0 Use interface builder for HTML rendering. * * @param mixed $post Current post object. * @return void */ public function get_fields($post) { if (is_array($this->args['single']) && isset($this->args['single']['key'])) { $this->meta_values = get_post_meta($post->ID, $this->args['single']['key'], true); } $zero_allowed = apply_filters('cherry_zero_allowed_controls', array('stepper', 'slider')); foreach ($this->args['fields'] as $key => $field) { $default = Cherry_Toolkit::get_arg($field, 'value', ''); $value = $this->get_meta($post, $key, $default); if (isset($field['options_callback'])) { $field['options'] = call_user_func($field['options_callback']); } $element = Cherry_Toolkit::get_arg($field, 'element', 'control'); $field['id'] = Cherry_Toolkit::get_arg($field, 'id', $key); $field['name'] = Cherry_Toolkit::get_arg($field, 'name', $key); $field['type'] = Cherry_Toolkit::get_arg($field, 'type', ''); $field['value'] = $value; // Fix zero values for stepper and slider if (!$value && in_array($field['type'], $zero_allowed)) { $field['value'] = 0; } $register_callback = 'register_' . $element; if (method_exists($this->builder, $register_callback)) { call_user_func(array($this->builder, $register_callback), $field); } } $this->builder->render(); }
/** * Get registered control fields * * @since 1.0.0 * @param mixed $term current term object. * @param [type] $taxonomy current taxonomy name. * @return string */ public function get_fields($term, $taxonomy, $format = '%s') { $result = ''; foreach ($this->args['fields'] as $key => $field) { if (in_array($key, Cherry_Term_Meta::$register_fields)) { continue; } else { Cherry_Term_Meta::$register_fields[] = $key; } if (false !== $term) { $value = get_term_meta($term->term_id, $key, true); } else { $value = ''; } $value = !empty($value) ? $value : Cherry_Toolkit::get_arg($field, 'value', ''); if (isset($field['options_callback'])) { $options = call_user_func($field['options_callback']); } else { $options = Cherry_Toolkit::get_arg($field, 'options', array()); } $args = array('type' => Cherry_Toolkit::get_arg($field, 'type', 'text'), 'id' => $key, 'name' => $key, 'value' => $value, 'label' => Cherry_Toolkit::get_arg($field, 'label', ''), 'options' => $options, 'multiple' => Cherry_Toolkit::get_arg($field, 'multiple', false), 'filter' => Cherry_Toolkit::get_arg($field, 'filter', false), 'size' => Cherry_Toolkit::get_arg($field, 'size', 1), 'null_option' => Cherry_Toolkit::get_arg($field, 'null_option', 'None'), 'multi_upload' => Cherry_Toolkit::get_arg($field, 'multi_upload', true), 'library_type' => Cherry_Toolkit::get_arg($field, 'library_type', 'image'), 'upload_button_text' => Cherry_Toolkit::get_arg($field, 'upload_button_text', 'Choose'), 'max_value' => Cherry_Toolkit::get_arg($field, 'max_value', '100'), 'min_value' => Cherry_Toolkit::get_arg($field, 'min_value', '0'), 'max' => Cherry_Toolkit::get_arg($field, 'max', '100'), 'min' => Cherry_Toolkit::get_arg($field, 'min', '0'), 'step_value' => Cherry_Toolkit::get_arg($field, 'step_value', '1'), 'style' => Cherry_Toolkit::get_arg($field, 'style', 'normal'), 'display_input' => Cherry_Toolkit::get_arg($field, 'display_input', true), 'controls' => Cherry_Toolkit::get_arg($field, 'controls', array()), 'fields' => Cherry_Toolkit::get_arg($field, 'fields', array()), 'auto_parse' => Cherry_Toolkit::get_arg($field, 'auto_parse', false), 'icon_data' => Cherry_Toolkit::get_arg($field, 'icon_data', array()), 'toggle' => Cherry_Toolkit::get_arg($field, 'toggle', array('true_toggle' => 'On', 'false_toggle' => 'Off', 'true_slave' => '', 'false_slave' => '')), 'class' => Cherry_Toolkit::get_arg($field, 'class'), 'required' => Cherry_Toolkit::get_arg($field, 'required', false), 'placeholder' => Cherry_Toolkit::get_arg($field, 'placeholder'), 'master' => Cherry_Toolkit::get_arg($field, 'master'), 'title_field' => Cherry_Toolkit::get_arg($field, 'title_field'), 'ui_kit' => Cherry_Toolkit::get_arg($field, 'ui_kit', true)); $current_element = $this->ui_builder->get_ui_element_instance($args['type'], $args); $result .= sprintf($format, $current_element->render()); } return $result; }
/** * Show widget form * * @since 1.0.0 * @see WP_Widget->form * @param array $instance current widget instance. * @return void */ public function form($instance) { if (empty($this->settings)) { return; } foreach ($this->settings as $key => $setting) { $value = isset($instance[$key]) ? $instance[$key] : Cherry_Toolkit::get_arg($setting, 'value', ''); if (isset($setting['options_callback'])) { $callback = $this->get_callback_data($setting['options_callback']); $options = call_user_func_array($callback['callback'], $callback['args']); } else { $options = Cherry_Toolkit::get_arg($setting, 'options', array()); } $args = array('type' => Cherry_Toolkit::get_arg($setting, 'type', 'text'), 'id' => $this->get_field_id($key), 'name' => $this->get_field_name($key), 'value' => $value, 'label' => Cherry_Toolkit::get_arg($setting, 'label', ''), 'options' => $options, 'multiple' => Cherry_Toolkit::get_arg($setting, 'multiple', false), 'filter' => Cherry_Toolkit::get_arg($setting, 'filter', false), 'size' => Cherry_Toolkit::get_arg($setting, 'size', 1), 'null_option' => Cherry_Toolkit::get_arg($setting, 'null_option', 'None'), 'multi_upload' => Cherry_Toolkit::get_arg($setting, 'multi_upload', true), 'library_type' => Cherry_Toolkit::get_arg($setting, 'library_type', 'image'), 'upload_button_text' => Cherry_Toolkit::get_arg($setting, 'upload_button_text', 'Choose'), 'max_value' => Cherry_Toolkit::get_arg($setting, 'max_value', '100'), 'min_value' => Cherry_Toolkit::get_arg($setting, 'min_value', '0'), 'step_value' => Cherry_Toolkit::get_arg($setting, 'step_value', '1'), 'style' => Cherry_Toolkit::get_arg($setting, 'style', 'normal'), 'placeholder' => Cherry_Toolkit::get_arg($setting, 'placeholder', ''), 'toggle' => Cherry_Toolkit::get_arg($setting, 'toggle', array('true_toggle' => 'On', 'false_toggle' => 'Off', 'true_slave' => '', 'false_slave' => '')), 'master' => Cherry_Toolkit::get_arg($setting, 'master', ''), 'icon_data' => Cherry_Toolkit::get_arg($setting, 'icon_data', array()), 'title_field' => Cherry_Toolkit::get_arg($setting, 'title_field'), 'add_label' => Cherry_Toolkit::get_arg($setting, 'add_label', ''), 'fields' => Cherry_Toolkit::get_arg($setting, 'fields', array()), 'ui_kit' => Cherry_Toolkit::get_arg($setting, 'ui_kit', true)); $this->render_control($args); } }