Начиная с версии 4.4 в WordPress имеется встроенный функционал добавления/удаления произвольных метаданных для категорий и таксономий, однако механизма для пользователя по управлению данными полями, пока что к сожалению — нет.
Для одного из проектов, мне потребовался функционал, с помощью которого администратор сайта смог бы самостоятельно, без вмешательства программистов изменять настройки вывода для категорий и произвольных таксономий. Порывшись в интернете, я обнаружил несколько плагинов, выполняющих такую задачу, но все они были рассчитаны на версию WordPress < 4.4 и как следствие, не учитывали новые возможности CMS. Все эти плагины, работают по принципу создания дополнительной таблицы в базе данных MySQL, и размещают информацию о метаданных в этой таблице. Такой подход работает во всех версиях WordPress, но если есть возможность обойтись без создания дополнительных таблиц в базе данных, и на сайте используется свежая версия Вордпресс, то почему бы не воспользоваться этим? В итоге написал небольшой плагин ASDB Taxonomy and Category Meta
Исходные данные
Необходимо вывести произвольные типы данных Флаг
, Фон заголовка
, Описание
для произвольной таксономии — Регионы.
ASDB Taxonomy and Category Meta
Устанавливаем плагин ASDB Taxonomy and Category Meta, активируем.
Переходим Административная панель > Настройки > Taxonomy and Category Meta. Добавляем необходимые нам метаданные. На данный момент, плагин поддерживает следующий типы ввода метаданных — Text (Строка текста), textarea (блок текстовой информации), Editor (Визуальный редактор для ввода html), Image (Загрузка изображения и сохранение URL в метаданных), checkbox.
Далее переходим в нужную нам таксономию или категорию > Редактировать термин, и добавляем необходимые метаданные для термина. Сохраняемся.
Теперь необходимо внести изменения в файлы шаблона, чтобы отобразить наши мета.
Поскольку наша таксономия называется Regions
, создаем шаблон taxonomy-regions.php
в корне нашей темы, копируем в него содержимое archive.php
. Добавляем код для отображения внесенных нами данных.
<?php /** * The template for displaying custom taxonomy Regions * * @link https://codex.wordpress.org/Template_Hierarchy * * @package asdbBase * @since asdbBase 1.0.0 */ $meta_cat = new stdClass; $qobj = get_queried_object(); foreach ( get_term_meta( $qobj->term_id ) as $k => $v ) {$meta_cat->$k = $v[0];} if (isset($meta_cat->taxmeta_title_bg)!=false) {$title_background = $meta_cat->taxmeta_title_bg;} if (isset($meta_cat->taxmeta_flag)!=false) {$tax_flag = $meta_cat->taxmeta_flag;} ?> <section class="cat-title" style="background:url('<?php echo $title_background; ?>');"> <div class="row collapse"> <div class="column medium-8 large-centered"> <h1> <span><img width="75" height="50" src="<?php echo $tax_flag; ?>" alt="<?php echo single_cat_title('', false); ?>"/> </span> <span class="tax-title"> <?php echo single_cat_title('', false); ?> </span> </h1> </div> </div> </section>
В итоге по адресу отредактированного нами термина /regions/armenia/ увидим отображение внесенных нами метаданных.