Добрый день, нужно реализовать лс систему без плагинов. Подскажите если реализовать ее с помощью custom post type, т.е., сообщения будут как посты, но они не будут выводиться в общей ленте постов. Правильно ли это? Или подскажите как более правильно это реализовать, в какую сторону смотреть?
Сайты на WordPress + Интернет магазины WooCommerce
Мы пожу систему делаем и работаем в ней. В итоге пришли к системе похожей на вконтакте и скайп.
Каждый новый чат это пост.
Но сообщения внутри чата это комменты.
Таким образом можно определять участников чата. Можно тет а тет писать, а можно подключть товарищей и дать чату заголовок.
Пока что лучше схемы не смогли придумать.
да, все верно. делаем мету, в которую пишем участников. если их два то два.
но кто мешает добавить 3 или 4 участника?
по нагрузке особой разницы не вижу. почти везде тут поля индексные и это обеспечивает одинаковую скорость.
плюс в том что идем в потоке типового API и это дает оптимальность по всем фронтам.
минус мб разве что при попытке отобрать 100 чатов сразу по пупкину.
В этом случае запрос будет скорябать по полю значения меты, у которого нет индекса и потому может появиться нагрузка.
но это может возникнуть на масштабах в тысячи пользователей и миллиионы чатов. к тому моменту связь чатов и участников можно будет в отдельную таблицу с индексами. это займет пару часов работы. сами чаты при этом можно оставлять как посты, а сообщения как комменты. Там узких мест быть не может, т.к. все ключевые поля индексируются.
далее наша система следит за новыми комментами, видит кто участники чата, добавляет их в мету коммента как адресаты для уведомления.
далее это может выводиться на соответствующей странице как новые сообщения чата или уходить уведомление на эл.почту, как только система зафиксировала отправку уведомления, она добавляет в коммент флаг отправки.
таким образом система всегда обрабатывает только те комментарии по которым не было уведомлений.
при условии что в системе уже десятки тысяч комментариев, то это обеспечивает нужный уровень скорости и экономии ресурса СУБД.
у комментариев такие же метаполя как и у постов. как и у пользователей.
метаполей нет только у таксономий.
даже у сайта есть метаполя, тока они опции называются и чуть отличаются от тех мет что у постов, комментов и пользователей.
ЛС это "личные сообщения"?
Если так, то можно и с помщью custom post type, а можно и попытаться через user meta. Это из быстрых решений что в голову приходит. Ну и самый жирный вариант -- это новая таблица, но это уже ближе к решению через плагин
Если через custom type, то каждый раз будет создаваться новое поле? А через user meta вообще не пойму куда сообщения сохранять? Для каждого сообщения делать add_user_meta? Мне нужен тот способ, который меньше всего будет нагружать сервер