Как обрабатывать этот конкретный случай пользовательского типа сообщений?

Я работаю над WP плагином WP SoundSystem . Это плагин, предназначенный для работы на «музыкальном» веб-сайте: он обрабатывает исполнителей, треки, альбомы, плейлисты … через настраиваемые типы сообщений и инструменты. Вы можете видеть, как он работает на Spiff Radio .

Когда я публикую новый плейлист, моя функция проверяет каждую строку трека из списка треков и создает новый трек; или возвращает идентификатор существующей записи дорожки, если она существует (у меня есть функция, которая проверяет наличие того же исполнителя + название + метаданные альбома). Затем список идентификаторов дорожек сохраняется как мета-сообщение в записи треклиста.

введите описание изображения здесь

Я разработал его так, потому что думаю, было бы неплохо добавить один и тот же трек несколько раз; но лучше иметь ОДИН трек с максимально точной информацией (изображение с изображением, аудиоисточники и т. д.).

Но это еще одна проблема. Я хотел бы добавить в свой плагин пользовательские функции, среди которых возможность создания новых плейлистов и / или добавления треков в их существующие плейлисты.

Но тогда, как насчет следовых сообщений?

  • Что делать, если пользователь A добавляет трек от пользователя B в свой список воспроизведения; но этот пользователь B удаляет трек позже? Или что-то типа того ?
  • Должен ли я удалить функцию delete_post для этих пользователей?
  • Должен ли я «передать» право собственности на дорожку на пользователя А вместо удаления сообщения?
  • Кто может редактировать этот трек?

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

Или, может быть, это вместо хранения списка идентификаторов дорожек для списка воспроизведения; Я должен сохранить список треков (artist + title + album)?

У вас есть какие-то советы по этому поводу? Благодаря !

Solutions Collecting From Web of "Как обрабатывать этот конкретный случай пользовательского типа сообщений?"

Вопрос в следующем: как вы хотите справиться с этим?

Насколько я понимаю, вы в настоящее время пытаетесь создать базу данных песен («track post»), из которой пользователи смогут выбирать из своих плейлистов. Каждый пользователь может добавлять новые песни.

Вы можете решить эту проблему аналогично тому, как работает StackExchange: добавьте пользователя сообщества . Всякий раз, когда создается песня, ее собственность передается пользователю Сообщества. Затем добавьте пользовательские возможности, которые относятся к этому пользователю Сообщества. Кто может редактировать сообщения, которые удаляют, …?

В этой базовой версии может оказаться, что пользователь не может редактировать / удалять созданную изначально песню. Вы даже можете добиться этого, сохранив оригинального создателя как мета-поля, подключившись к user_has_cap .