Первое что приходит на ум:
- создать новый непубличный тип записи Сообщения
- по умолчанию можно использовать заголовок, как тему сообщения; автора, как имя отправителя; содержимое записи, как само сообщение;
- создать кастомное поле ID получателя
В целом с такими исходными можно написать простенький мессенджер внутри сайта
Создать непубличный пост, примерно знаю.
по умолчанию можно использовать заголовок, как тему сообщения; автора, как имя отправителя; содержимое записи, как само сообщение;
Тут не совсем понятно.
То есть, к примеру мне нужно написать бобу, сообщение, для этого мне нужно знать айди юзера боба, ок, тут понятно. Дальше я заношу в непубличный пост сообщение и айди юзера ? или айди юзера я заношу в кастомное для этого поля и потом связываю его с кастомным типом записи ?
Конечно дело Ваше, но я бы не делал с типами записями. Лучше создать отдельную таблицу, свою форму итд. Зачем раздувать сообщениями таблицу которая не для этого создавалась?
Я тоже придерживаюсь мнения что просто к айди прикрутить отдельную таблицу и систему в общем, а айди использовать ввиде адресатов что кому куда. То есть по сути будут использоваться только айди юзеров. Но пока как это правильно рализовать — не знаю, наверно пока не начну.
Мой ответ базируется на запросе «сделать с помощью wordpress функционала». Если цель по максимум использовать встроенный функционал, то новый тип записи для этого подходит.
Сам принцип общения с бобом следующий: вы пишите бобу, нажимаете кнопку отправить, происходит асинхронный запрос.
Асинхронным запросом мы создаем новую запись и помещаем следующие данные:
- автор записи (ID) = отправитель
- контент записи = отправленное сообщение
- кастомное поле ID получателя = ID Боба
- название записи можно сгенерировать любое, типа «Сообщение от Васи Бобу 09.06.2025 16:08»
Получать же все сообщения в чате можно через get_posts()
или WP_Query
Но лучше конечно реализовывать отдельной сущностью, чтобы не нагружать базу, например как сделаны комментарии в ВП. Они хранятся в отдельной таблице wp_comments
. Тут можно создать две таблицы: wp_chat_messages
(со всеми сообщениями) и wp_chats
(чтобы группировать сообщения). Ну и по тому же принципу написать свои функции добавления новых сообщений и т.д.
Примерно понял как.
Как выйдет в реализации, пока не знаю, но, если будут вопросы, буду неприменно обращаться.