Метаполя (произвольные поля) для рубрик (таксономий) в WordPress — title, description, keywords…
На сайте есть замечательная статья про создание произвольных полей но вот про метаполя или произвольные поля вроде title для элементов таксономий или терминов или рубрик, меток ничего не нашел.
Подскажите, в какую сторону копать (без плагинов)
Как раз по теме создания таких полей в админ-панели, я описывал хук (taxonomy)_edit_form_fields. Рекомендую к прочтению.
Шаг 1: (с версии WP 4.4 не нужен)
Шаг 1 устарел с версии WordPress 4.4. поэтому я убрал его вниз ответа...
Шаг 2:
Нужно вывести поля при редактировании термина. Для этого предлагаю использовать класс от Миши Рудрастых (я его немного изменил). Добавляем его в functions.php в самое начало или в плагин:
Далее используя добавленный класс, создаем поля для элементов таксономий
И вот что должно получиться:
Шаг 3:
Выводим имеющиеся поля в заголовки рубрик и в head часть документа.
Можно делать без хуков, а напрямую, тут уже от имеющихся плагинов зависит...
Главное тут мы получаем метаполя с помощью get_metadata()
Шаг 1: (с версии WP 4.4 не нужен)
Тут главная проблема, что некуда записывать данные. Во многих источниках данные пишут в опции, а это плохо. Хорошо если создать специальную таблицу метаданных для таксономий.
Этот шаг не нужен с версии 4.4. В этой версии, наконец, была создана таблица метаполей для элементов таксономий! Поэтому если у вас WP 4.4 и выше, переходите сразу к шагу 2.
Запускаете один раз эту функцию, потом код можно удалить. Для запуска можно в functions.php сунуть:
Эта функцию создаст новую таблицу в БД, termmeta - термины для таксономий.
Подробнее в этой статье: http://wp-kama.ru/note/taxonomy-metadata-metadannyie-dlya-taksonomiy
Теперь у нас есть куда записывать данные таксономий.
в теории все понятно, как раз то, что было нужно.
Но вот на практике - не работает. Данные не сохраняются.
В этой статье: также было упомянуто про создание поля для картинки в рубриках, было бы здорово реализовать еще и это. Сейчас потыкаю на тестовом варианте, может что и получится.
сейчас вывод title для записей и страниц происходит вот так:
также, в header.php вывод мета для страниц и записей
Как возможно подставить вывод сюда, с прописанием условий для категорий? а то запутался
Как это не сохраняются, я проверял код у меня все работало...
Что касается вывода, то созданные метаполя выводятся так:
Это вывод для поля
seo_description
И т.д. по аналогии. Выводите где нужно и как нужно. Перед выводом проверьте что вы находитесь на странице рубрики. В общем этот код есть в ответе, изучайте...
Таблица wp_termmeta создалась, тут все ок, поля в таблице: meta_id, term_id, meta_key, meta_value. Доп. поля в рубрике тоже создались, все как на картинке, выложенной Вами. Но вот при редактировании рубрики, таблица остается пустой т.е.: вбиваем в соответствующие поля в рубрике что-либо, кликаем "сохранить", заходим в рубрику заново, и видим эти поля пустыми. В бд данные также не заносятся
Ой, извиняюсь! Я же забыл зарегистрировать название таблицы. Обновил класс trueTaxonomyMetaBox до версии v1.1, там строки добавил:
здорово, работает. Только Вы ошиблись: поле в таблице по выше написанному коду не "term_seo_description", а "txseo_seo_description". Получилось что-то вроде вот этого:
Осталось дописать вывод в else стандартного сценария вывода доп полей. Спасибо большое!
ага, все вместе получилось так:
Для тех кто использует All in One Seo Pack третий шаг нужно изменить
Спасибо! Помогли
Превосходно! Спасибо за отличный, структурированный, достаточно объяснённый пример! Очень помогло с переданным сайтом, на котором стоит старый ACF, не умеющий в поля для рубрик (а обновление ломает вёрстку, построенную на других полях).
Еще бы указать, можно ли поднять их повыше в админке, т.к. они болтаются в самом низу.
Огромное спасибо, полезный материал, но подскажите, как добавить возможность к выше упомянутому, а именно возможность добавить абрац, так как описание дублируется в дескрипшн.
тут нашел решение, но не тестировал, что скажите?
А если мне нужен select тогда как быть?