Использовать персонализированные сообщения в качестве замены метаномии терминов?

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

Предполагая, что у меня есть только сообщения, у которых нет «естественных» родителей на моем сайте, почему бы мне не просто таксономировать мои сообщения, связав их с post_parent и сохранить мои метаданные в post_meta родителя?

НАПРИМЕР

У меня есть CPT «птицы» и таксономия «user_bird_collection».

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

С таксономией

Я создаю (или добавляю) термин в user_bird_collection под названием «Джек» (или нечто более уникальное, как его UID), добавляя Canary к термину.

Когда Джек идет к mybirds.com/my_collection, я показываю ему всех птиц в его срок.

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

С post_parents

Я создаю новый пост с Джеком как автором, чей post_parent является идентификатором канарейки.

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

Когда он хочет назвать свою канарейку, все, что мне нужно сделать, это добавить метаданные к посту Джека – эффективно его «собственную» копию канарейки, своего рода обертку вокруг нее.

ОСНОВНЫЕ ПРЕИМУЩЕСТВА

  • Запрос так же прост.
  • Я могу добавить столько метаданных, сколько мне нравится исходной птице или персонализированной птице, использующей post_meta.
  • Я не привязан к одной из нескольких конкурирующих реализаций термина meta.

В чем проблема с этим?

Вы можете добавить метаданные таксономии, похожие на add_post_meta и некоторые примеры этого включают,

Учебное пособие

Класс метаданных таксономии (улучшенная версия выше)

Я лично сам использовал этот класс, который также был автором авторитетного члена и модератора здесь, в WPSE -> Bainternet , он сделал то, что он сказал на коробке.

Plugin

  • Плагин метаданных таксономии

Учебное пособие

Это в сторону …

Если у вас есть пользователь, например, по имени Джек , почему бы вам не назначить пользователя настраиваемому типу сообщений через метаполе отправки в мета-поле?

Таким образом, вы будете смотреть,

add_meta_box

add_post_meta

Вы по-прежнему можете использовать пользовательские таксономии, чтобы помочь вам дополнительно классифицировать или группировать ваши данные, но многое из того, что вы пытаетесь достичь, совершенно так же, как если бы вы делали это с помощью метаданных posta для начала (т.е. add_post_meta)

И чтобы упростить вещи, вы можете использовать класс мета-ящиков для развертывания своих решений,

http://en.bainternet.info/2012/how-i-add-a-wordpress-metabox http://www.deluxeblogtips.com/meta-box/ http://www.farinspace.com/wpalchemy-metabox /

Я использовал все вышеперечисленное, каждый из которых хорош. Я все еще использую WPAlchemy и класс Meta-Box от Deluxe Blog Tips. Что касается Bainternet, то в этом классе нет ничего плохого, это уже вопрос слишком многого. Так что сделай выбор.

ОБНОВИТЬ

Мой подход к этому был бы,

  • a) создать персонализированную запись типа Birds
  • б) создать таксономию типа птицы
  • c) создать мета-поле с двумя полями

    • 1) перечисляет пользователей в раскрывающемся списке
    • 2) имя пользователя птица

Этот процесс будет состоять в том,

  • а) добавить Птицу, такую ​​как Канарские острова
  • b) добавить термин таксономии, который соответствует имени птицы, например, Канарские острова
  • c) добавить пользователя в мой мета-ящик, связанный с этой птицей
  • d) если доступно на момент создания, добавьте данное имя, которое пользователь выбирает для птицы

Используя повторяющееся поле, в котором есть кнопка « Добавить сейчас» , вы можете добавить другого пользователя. Но вместо того, чтобы группировать все мета-поля в одну запись meta_key , вам нужно создать отдельные мета-ключи для каждого пользователя, которого вы хотите связать с птицей, иначе вы получите сериализованные данные, которые медленно запрашиваются.

Даже этот подход можно улучшить.

Вместо этого вы могли бы связать таксономию «Канарские острова» с пользователем User Meta.

Для каждого типа птиц в коллекции пользователей вы должны использовать add_user_meta для применения имени, которое пользователь выбирает для птицы.

Ваш мета-ящик, созданный с помощью add_meta_box строго не ограничивается использованием функций add_post_meta т. Д., Вы можете написать свою функцию вместо add_user_meta и update_user_meta . Так и дальше и так далее.

Это оставляет четкое разделение между каждым из ваших элементов.

  • Custom Post Type для Bird, который может объяснить птицу, ее происхождение и т. Д.
  • Таксономия предназначена для классификации птицы
  • Meta Box / User Meta – связать таксономию с именем Bird для пользователя

Идея post_parents действительно не очень хорошая, я должен сказать, потому что создание новой Почты для того, что в противном случае является мета-данными, в первую очередь приравнивается к раздуванию, когда у нас уже есть таблицы таксономии и пользователя, чтобы идти вместе с таблицей Posts для вашего пользовательского типа сообщения.

Я не вижу большой проблемы, кроме того, что может быть только один родитель. Использование типа отношений между сообщениями и сообщениями, которое позволяет использовать многие-ко-многим, было бы альтернативным путем, где ваши термины «таксономии» являются действительно сообщениями типа персонализированного сообщения и, следовательно, могут иметь контент (и даже таксономии, и т. д.), связанных с ними. Прекрасный плагин Posts 2 Posts делает это намного проще, и с UI для загрузки.

Начиная с WordPress 4.4 , термин «таксономия» теперь является частью ядра WordPress.

Вы можете использовать следующие новые функции для управления термином meta:

  • add_term_meta
  • update_term_meta
  • get_term_meta

Однако для конкретного варианта использования в этом вопросе наиболее надежным способом управления отношениями пользователя с Post может быть использование Posts2Posts (плагин, созданный и поддерживаемый scribu, основным вкладчиком).

Используя этот плагин, вы можете создать связь между пользователем и почтой, а также добавить метаданные в саму связь .