Уведомление по электронной почте всякий раз, когда комментарий создается через WP REST API.

Я создаю пользовательскую форму комментариев для своей темы одностраничного приложения Vue.js и WordPress и смог опубликовать комментарий через ajax POST-запрос к WP REST API. Но я не получаю никаких уведомлений администратора о новом комментарии, даже если настройки в «Настройки» -> «Чтение» настроены на уведомление администратора каждый раз, когда комментарий создается/добавляется.

Итак, как я могу получать уведомления по электронной почте о создании комментариев WP REST API?


person Tech Nomad    schedule 15.06.2019    source источник


Ответы (1)


По какой-то причине команда WP REST API не использовала функцию wp_new_comment при добавлении/создании комментария. Эта функция включает в себя хук действия comment_post, который, в свою очередь, используется WordPress для отправки уведомлений администратору в wp-includes/default-filters.php.

Вместо этого они использовали функцию wp_insert_comment(), которая определена в wp-includes/comments.php и которая также включает хук действия с тем же именем wp_insert_comment в самом конце функции. Этот хук мы можем использовать для запуска функции уведомления wp_new_comment_notify_moderator(). Просто добавьте следующий фрагмент в файл functions.php вашей темы/плагина.

add_action( 'wp_insert_comment', 'wp_new_comment_notify_moderator' );

смотрите также:

https://core.trac.wordpress.org/ticket/40352

https://wordpress.org/support/topic/wp-api-comments-not-sending-notifications/#post-8987973

person Tech Nomad    schedule 15.06.2019
comment
Вроде работает, за исключением ответов. Есть ли какой-нибудь трюк, чтобы он мог работать и для ответов? - person MoOx; 29.02.2020
comment
Привет. Не могу подтвердить. Только что протестировал его на моем фиктивном сайте разработки - я получаю уведомление по электронной почте при добавлении ответа на существующий комментарий. И у меня есть только этот хук действия, связанный с комментариями в теме. - person Tech Nomad; 29.02.2020
comment
этот код отлично работает при использовании остальных API. но когда я отправляю комментарии через веб-сайт, он отправляет два электронных письма с уведомлением. Есть ли способ решить эту проблему? - person Sadegh; 26.05.2021
comment
@Sadegh Вы имеете в виду, что дважды получаете одно и то же уведомление по электронной почте при добавлении хука действия в functions.php? Что вы имеете в виду, когда я отправляю комментарии через веб-сайт? Ваш сайт не использует REST API для отправки комментариев? Тогда вам вообще не нужен этот крючок. Не уверен, что на самом деле проблема в вашем случае. - person Tech Nomad; 26.05.2021
comment
@TechNomad У меня есть сайт на WordPress и приложение для Android. веб-сайт работает правильно, а приложение для Android работает с использованием REST API. Когда кто-то комментирует сообщение на веб-сайте WordPress, он отправляет модератору 1 электронное письмо. Когда кто-то комментирует сообщение в приложении для Android (которое работает с REST API), он не отправляет электронное письмо модератору. Когда я добавляю этот хук в свою тему function.php, мое приложение для Android работает правильно. но когда кто-то комментирует сообщение на веб-сайте, он дважды отправляет электронное письмо модератору. - person Sadegh; 27.05.2021
comment
@Sadegh хорошо, теперь я понимаю, но, очевидно, когда вы добавляете хук действия сверху, функция wp_new_comment_notify_moderator вызывается дважды на вашем веб-сайте. Просто оберните хук в условие if, которое проверяет, обрабатывается ли запрос rest API следующим образом: if(defined('REST_REQUEST')){add_action( 'wp_insert_comment', 'wp_new_comment_notify_moderator' );}. Проверьте эту ссылку для других вариантов: .stackexchange.com/questions/221202/ - person Tech Nomad; 27.05.2021
comment
@TechNomad Спасибо за вашу помощь. код не решает проблему. но решение в ссылке, о которой вы упомянули, работает: - person Sadegh; 27.05.2021