Дополнительные произвольные поля для разделов сайта на 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"