99 lines
3.5 KiB
PHP
Executable File
99 lines
3.5 KiB
PHP
Executable File
<?php
|
|
if (!defined('ABSPATH')) exit; // if direct access
|
|
|
|
|
|
if (!class_exists('TaxonomyEdit')) {
|
|
|
|
class TaxonomyEdit
|
|
{
|
|
|
|
public $data = array();
|
|
|
|
public function __construct($args)
|
|
{
|
|
|
|
$this->data = &$args;
|
|
add_action($this->get_taxonomy() . '_add_form_fields', array($this, 'add_form_fields'), 12);
|
|
add_action($this->get_taxonomy() . '_edit_form_fields', array($this, 'edit_form_fields'), 12);
|
|
add_action('edited_' . $this->get_taxonomy(), array($this, 'save_update_taxonomy'), 12);
|
|
add_action('create_' . $this->get_taxonomy(), array($this, 'save_update_taxonomy'), 12);
|
|
}
|
|
|
|
public function save_update_taxonomy($term_id)
|
|
{
|
|
foreach ($this->get_panels() as $optionIndex => $option) :
|
|
$option_value = isset($_POST[$option['id']]) ? mage_array_strip($_POST[$option['id']]) : '';
|
|
if (is_array($option_value)) {
|
|
$option_value = serialize($option_value);
|
|
}
|
|
update_term_meta($term_id, $option['id'], $option_value);
|
|
endforeach;
|
|
}
|
|
|
|
|
|
public function edit_form_fields($term)
|
|
{
|
|
|
|
$term_id = $term->term_id;
|
|
foreach ($this->get_panels() as $optionIndex => $option) : ?>
|
|
<tr class="form-field">
|
|
<th scope="row" valign="top"><label for="<?php echo esc_attr($option['id']); ?>"><?php echo esc_html($option['title']); ?></label></th>
|
|
<td>
|
|
<?php
|
|
|
|
$this->field_generator($option, $term_id)
|
|
?>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
endforeach;
|
|
}
|
|
|
|
public function add_form_fields($term)
|
|
{
|
|
$term_id = '';
|
|
?>
|
|
<?php foreach ($this->get_panels() as $optionIndex => $option) : ?>
|
|
<tr class="form-field">
|
|
<th scope="row" valign="top"><label for="<?php echo esc_attr($option['id']); ?>"><?php echo esc_html($option['title']); ?></label></th>
|
|
<td>
|
|
<?php $this->field_generator($option, $term_id); ?>
|
|
</td>
|
|
</tr>
|
|
<?php
|
|
endforeach;
|
|
}
|
|
|
|
public function field_generator($option, $term_id)
|
|
{
|
|
|
|
$id = isset($option['id']) ? $option['id'] : "";
|
|
$type = isset($option['type']) ? $option['type'] : "";
|
|
$details = isset($option['details']) ? $option['details'] : "";
|
|
|
|
if (empty($id)) return;
|
|
$option['field_name'] = $id;
|
|
$option_value = get_term_meta($term_id, $id, true);
|
|
$option['value'] = is_serialized($option_value) ? maybe_unserialize($option_value) : $option_value;
|
|
|
|
if (sizeof($option) > 0 && isset($option['type'])) {
|
|
echo mep_field_generator($option['type'], $option);
|
|
do_action("wp_theme_settings_field_$type", $option);
|
|
}
|
|
if (!empty($details)) echo "<p class='description'>$details</p>";
|
|
}
|
|
|
|
private function get_taxonomy()
|
|
{
|
|
if (isset($this->data['taxonomy'])) return $this->data['taxonomy'];
|
|
else return "category";
|
|
}
|
|
|
|
private function get_panels()
|
|
{
|
|
if (isset($this->data['options'])) return $this->data['options'];
|
|
else return array();
|
|
}
|
|
}
|
|
}
|