Дополнительные произвольные поля для разделов сайта на WordPress

Admin PHP, WordPress

Дополнительные поля для разделов сайта на WordPress. Начальный вариант взят с сайта githab. Привожу его здесь немного модифицированным. На всякий случай, если когда-нибудь понадобится.

Источник:
gist.github.com

Код будет выводить два дополнительных поля, значения которых можно выводить либо в мета тегах описания категорий либо на страницах разделов. Как вариант, сюда же можно поставить ссылку на изображение категории, чтобы выводить картинки для разделов без плагинов, а код немного доработать.

Код надо вставлять в файл functions.php или сделать отдельным плагином.

/* = Дополнительные произвольные поля для категорий
   Добавляет вызов функции при инициализации административного раздела
----------------------------------------------------------------------- */

add_action('admin_init', 'category_custom_fields', 1);
// функция расширения функционала административного раздела
function category_custom_fields()
    {
        // добавления действия после отображения формы ввода параметров категории
        add_action('edit_category_form_fields', 'category_custom_fields_form');
        // добавления действия при сохранении формы ввода параметров категории
        add_action('edited_category', 'category_custom_fields_save');
    }

function category_custom_fields_form($tag)
    {
        $t_id = $tag->term_id;
        $cat_meta = get_option("category_$t_id");
?>

<tr class="form-field">
<th scope="row" valign="top"><label for="extra1"><?php _e('Доп. 1'); ?></label></th>
<td>
<textarea rows="5" name="Cat_meta[cat_descr2]" id="Cat_meta[cat_descr2]">
<?php echo $cat_meta['cat_descr2'] ? $cat_meta['cat_descr2'] : ''; ?></textarea>
<br /><span class="description"><?php _e('Дополнительное описание категории 1'); ?></span>
</td>
</tr>

<tr class="form-field">
<th scope="row" valign="top"><label for="extra1"><?php _e('Доп. 2'); ?></label></th>
<td>
<textarea rows="5" name="Cat_meta[cat_descr3]" id="Cat_meta[cat_descr3]">
<?php echo $cat_meta['cat_descr3'] ? $cat_meta['cat_descr3'] : ''; ?></textarea>
<br /><span class="description"><?php _e('Дополнительное описание категории 2'); ?></span>
</td>
</tr>

<?php
    }

function category_custom_fields_save($term_id)
{
    if (isset($_POST['Cat_meta'])) {
        $t_id = $term_id;
        $cat_meta = get_option("category_$t_id");
        $cat_keys = array_keys($_POST['Cat_meta']);
        foreach ($cat_keys as $key) {
            if (isset($_POST['Cat_meta'][$key])) {
                $cat_meta[$key] = $_POST['Cat_meta'][$key];
            }
        }
        //save the option array
        update_option("category_$t_id", $cat_meta);
    }
}

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Дополнительные произвольные поля для разделов сайта на WordPress"