От автора: Концепция таксономий и терминов в WordPress нераздельна. Чуть ниже я более подробно расскажу об этом. По моему мнению, чтобы работать с терминами, необходимо понимать, что представляют собой таксономии и термины, и как они взаимодействуют. Иначе как мы будем уверены, что все делаем правильно на программном уровне?
В этой серии из двух статей мы с вами узнаем, что такое таксономии, их роль в WordPress, а также, что их связывает с терминами. И чуть позже мы обратим внимание на понятие терминов, а также научимся работать с term metadata API.
Рекомендую ознакомиться с предыдущими моими статьями, если вы еще этого не сделали. В них я объясняю принцип работы API, с которым мы будем работать. Если же вы не хотите тратить свое время на это, в принципе, ничего страшного. В этой серии мы подробно разберем все, что вам будет нужно.
Что такое таксономии?
Определение из кодекса: «В WordPress «таксономии» — это механизм группировки нескольких постов (ссылок или постов пользовательского типа).»
Это слово мы слышим нечасто. Иногда люди даже теряются, когда начинают говорить о таксономиях и терминах. Другими словами, люди используют пример фразы в качестве таксономии, но на самом деле это всего лишь термин. Чуть ниже я объясню это предложение.
Говоря простым языком, таксономии – это способы группировки вещей. В WordPress после установки есть две таксономии: категории и теги. Ниже мы разберем каждую таксономию более подробно.
Есть один нюанс, по крайней мере, в WordPress: таксономии могут быть иерархическими и неиерархическими. Самый понятный пример вышесказанного:
При создании нового категории в WordPress, вы можете создать как категорию верхнего уровня, подкатегорию, так и уже существующую категорию. К примеру, орлы – подкатегория птиц.
Создавая тег в WordPress, вы прописываете одно слово или фразу, которая будет ассоциироваться с постом. Дочерних и родительских тегов не бывает.
В этом и заключается разница иерархической и неиерархической таксономии. Вроде бы легко, правда? Если поддерживаются дочерние элементы, как в категориях, это иерархическая таксономия. Если же дочерние элементы не поддерживаются, как в тегах, это неиерархическая таксономия.
В этой серии статей умение различать таксономии не играет большой роли, разве что это поможет лучше понять этот язык в процессе разработки.
Но когда мы начнем программно создавать таксономии и прикреплять к ним термины, у нас не должно возникнуть сомнения в том, что мы делаем.
Что такое термины?
С таксономиями мы разобрались, а что такое термины? Из кодекса: «Термины в WordPress – это классификация, группа или подмножество таксономии, где последнее может быть категорией, тегом или пользовательской таксономией. По умолчанию у терминов есть заголовок, краткий заголовок URL адреса и описание. Иерархические таксономии, такие как категории, могут создавать родительские термины.»
Именно то определение, которого следовало ожидать, учитывая все, что мы уже изучили. Т.е. термины ассоциируются с таксономиями. Однако у терминов есть несколько важных аспектов, которые необходимо знать, если мы будем создавать их или работать с ними программно. Термины состоят из:
Краткого заголовка URL адреса
Заголовка
Описания
И не забывайте, что если мы работает с иерархической таксономией, такой как категории, термины могут включать в себя родительские термины.
Это не означает, что в таксономиях нет информации, относящейся к терминам. К примеру, у таксономии есть название, тип поста, с которым она ассоциируется, а также ряд аргументов, которые выходят за рамки этой статьи. В следующей статье мы подробно их рассмотрим.
Как связаны термины и таксономии?
Между терминами и таксономиями что-то наподобие симбиотической связи, т.е. один не может существовать без другого. В иерархических таксономиях это прослеживается нагляднее. В кодексе WordPress есть диаграмма, описывающая связь таксономий и терминов:
К примеру, можно иметь таксономию Категории, но в ней должен быть хотя бы один термин. Именно поэтому в WordPress по умолчанию есть термины без категорий (Uncategorized).
Но также можно создать таксономию Теги и не хранить ни одного тега в базе данных. Можем ли мы, как разработчики, как-то расширить данную систему? Как термины, так и таксономии могут быть созданы программно, однако пользователи также могут создавать и добавлять их. По крайней мере, если в пользовательском интерфейсе есть такая возможность.
Конкретный пример: С помощью интерфейса WordPress все мы можем создавать категории и теги. Но если вы программист и хотите переместить отдельные таксономии и термины в базу данных, вы можете сделать так, чтобы пользователи не смогли больше добавлять и удалять их через интерфейс.
Что такое Term Metadata?
Мы уже поняли, что такое таксономии и термины, а также разницу между ними, и остался один вопрос: Зачем нужны term metadata? Или по-другому в чем смысл term metadata?
Хороший вопрос. Возможно, именно поэтому данной функции не было до WordPress 4.4. Что еще интереснее, так это то, что об этой функции объявили больше 6 лет назад. Главная причина, по которой еще 6 лет назад заговорили о метаданных терминов была:
«На данный момент нет конкретного способа хранения дополнительных данных в таксономиях. Разработчикам плагинов приходится создавать методы для хранения таких данных. К примеру, можно хранить данные в зашифрованном виде в поле описания или использовать метод set_option(). Новая функция не помешала бы, к примеру, add_taxonomy_data() / get_taxonomy_data().»
Данное понятие будет иметь для вас смысл, если вы продвинутый разработчик. Но не все из нас достигли такого уровня знаний, и мы не можем точно сказать, чем метаданные терминов лучше.
Как и в других API, мы можем хранить данные о любом термине из базы данных. К метаданным терминов можно отнести что-либо, связанное с временем создания термина, автором, количеством постов, с которыми ассоциируется данный термин. Также с их помощью терминам можно добавлять изображения.
Так как информация в метаданных терминов может быть самой разной, нам открываются широчайшие возможности. В следующей статье мы рассмотрим конкретные примеры.
Заключение
На данный момент вы знаете все, что вам пригодится для работы с терминами и таксономиями. Когда вы будете писать плагин, тему или что-либо еще для клиента, вам, скорее всего, придется несколько раз открыть кодекс. Даже для опытного разработчика это нормальная практика.
В следующей статье мы научимся работать с метаданными терминов: разберем конкретный пример кода, добавим этот код в одну из тем по умолчанию, будем вносить изменения и следить за базой данных.
Автор: Tom McFarlin
Источник: //code.tutsplus.com/
Редакция: Команда webformyself.