Получение по 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 - эти данные можно потом использовать для вывода точного количества комментариев на странице с учётом комментариев ВКонтакте.

Поделиться статьей:  

Читайте также статьи из ITИнтернет технологии:

Поделитесь своим мнением

Правила сообщений

Для оформления сообщений Вы можете использовать следующие тэги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Хороший отзыв
Разумно · Дельно · Опытно · Идейно
Яндекс.Метрика
© 2016 - 2024 Хороший отзыв · Разумно · Дельно · Опытно · Идейно