Получение по email комментариев ВКонтакте с WordPress сайта
После установки на сайте форм комментариев от ВКонтакте, возникает необходимость о появлении этих комментариев узнавать. Когда страниц с открытым комментированием на сайте сотни, просматривать каждую страницу - не вариант.
Хочется узнавать о комментариях по мере их поступления и у программной платформы ВКонтакте для этого есть инструментарий.
Как настроить получение комментариев ВКонтакте с сайта WordPress на email и пойдёт речь в этой статье.
Форма комментариев ВКонтакте
Вставка формы комментариев ВКонтакте на сайт происходит нижеследующим кодом, он доработан для отправки данных о поступившем комментарии в скрипт по адресу https://site.ru/vk_comment.php Также в коде нужно заменить XXXXXXX на номер своего приложения ВКонтакте.
<script type="text/javascript" data-src="//vk.com/js/api/openapi.js?162"></script>
<div id="vk_comments"></div>
<script type="text/javascript">
VK.init({apiId: XXXXXXX, onlyWidgets: true});
VK.Widgets.Comments("vk_comments", {limit: 20, width: "665", attach: false});
VK.Observer.subscribe("widgets.comments.new_comment", function f(num, last_comment, date, sign)
{ vk_callback ('new', num, last_comment, date, sign); });
VK.Observer.subscribe("widgets.comments.delete_comment", function f(num, last_comment, date, sign)
{ vk_callback ('del', num, last_comment, date, sign); });
function vk_callback (act, num, last_comment, date, sign){
id_post = "<?php echo $post->ID; ?>";
jQuery.ajax({
type: "POST",
url: "https://site.ru/vk_comment.php",
data: ({
act: act,
cont_id: id_post,
last_comment: last_comment,
date: date,
sign: sign,
num: num
}),
error : function() {
alert("error");
}
});
}
</script>
Содержимое vk_comment.php - скрипта принимающего данные о комментарии и отправляющего email о поступлении нового комментария ВКонтакте - выглядит так:
function pism_elem($su) {
if ($su == 'shapka') {
return '<!DOCTYPE html><html lang="ru-RU"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"/></head><body>';
} elseif ($su == 'podval') {return '</body></html>';}
}
define('WP_USE_THEMES', false); // подгрузим ядро WordPress без его тем оформления
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
if (isset($_POST['num'])){
$act = $_POST['act'];
$meta_value = (int)$_POST['num'];
$last_comment = $_POST['last_comment'];
$post_id = (int)$_POST['cont_id'];
update_post_meta($post_id, 'vkapi_comm', $meta_value); // записать количество комментариев ВКонтакте для текущей страницы в произвольное поле WordPress
if ($act == 'new'){
$url = get_permalink($post_id);
$str = strtolower($last_comment);
$pos = strpos($str,'http');
if ($pos === false) {$tema = 'Новый комментарий';}
else {$tema = '[СПАМ] Новый комментарий';}
$last_comment = str_replace("<", "<", $last_comment);
$last_comment = str_replace(">", ">", $last_comment);
$last_comment = str_replace("&", "&", $last_comment);
$eh2pok = pism_elem('shapka') . '<p>Поступил новый комментарий через виджет ВКонтакте:</p><p>' . $last_comment . '</p><p>На странице: <a href="' . $url . '">' . $url . '</a></p>' . pism_elem('podval');
$headers2[] = 'From: [SITE.RU] <otkuda@site.ru>';
$headers2[] = 'Content-type: text/html; charset=utf-8';
$headers2[] = 'Precedence: bulk';
wp_mail("kuda@site.ru", $tema, $eh2pok, $headers2);
}
}
Отправка письма по email производится средствами WordPress, почта отправляется с ящика otkuda@site.ru на ящик kuda@site.ru. Если в тексте комментария встречается ссылка, то в теме письма ставится пометка [СПАМ]
Также количество комментариев ВКонтакте для текущей страницы записывается в произвольное поле WordPress - эти данные можно потом использовать для вывода точного количества комментариев на странице с учётом комментариев ВКонтакте.
Поделиться статьей: