Получение по email комментариев ВКонтакте и Facebook с WordPress сайта

После установки на сайте форм комментариев от ВКонтакте и Facebook, возникает необходимость о появлении этих комментариев узнавать. Когда страниц с открытым комментированием на сайте сотни, просматривать каждую страницу — не вариант.

Хочется узнавать о комментариях по мере их поступления и у программных платформ ВКонтакте и Facebook для этого есть инструментарий.

Как настроить получение комментариев ВКонтакте и Facebook с сайта WordPress на email и пойдёт речь в этой статье.

Форма комментариев ВКонтакте

Вставка формы комментариев ВКонтакте на сайт происходит нижеследующим кодом, он доработан для отправки данных о поступившем комментарии в скрипт по адресу https://site.ru/vk_comment.php Также в коде нужно заменить XXXXXXX на номер своего приложения ВКонтакте.

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

Форма комментариев Facebook

Вставка формы комментариев Facebook на сайт происходит кодом представленным ниже, он доработан для отправки данных о поступившем комментарии в скрипт по адресу https://site.ru/fb_comment.php Также в коде нужно заменить XXXXXXXXXXXXXXX на номер своего приложения Facebook.

<div id="fb-root"></div>
<script async defer crossorigin="anonymous" src="https://connect.facebook.net/ru_RU/sdk.js#xfbml=1&version=v4.0&appId=XXXXXXXXXXXXXXX&autoLogAppEvents=1"></script>
<div class="fb-comments" data-href="<?php echo 'https://site.ru' . $_SERVER["REQUEST_URI"]; ?>" data-width="665" data-numposts="20" data-colorscheme="light"></div>

<script type="text/javascript">
window.fbAsyncInit = function () {
 FB.Event.subscribe('comment.create', function () { fb_callback(1); });
 FB.Event.subscribe('comment.remove', function () { fb_callback(2); });
};

function fb_callback (job){
   id_post = "<?php echo $post->ID; ?>";
   jQuery.ajax({
      type: "POST",
      url: "https://site.ru/fb_comment.php",
      data: ({
          cont_id: id_post,
          job: job
      }),
      error : function() { 
          alert("error"); 
      }
   });
}
</script>

Содержимое fb_comment.php — скрипта принимающего данные о комментарии и отправляющего email о поступлении нового комментария Facebook — выглядит так:

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['job'])){
  $job = (int)$_POST['job'];
  $post_id = (int)$_POST['cont_id'];
  $fbapi_comm = (int)get_post_meta($post_id, 'fbapi_comm', true);
  if ($job==2) { $meta_value = $fbapi_comm-1; } else { $meta_value = $fbapi_comm+1; }
  update_post_meta($post_id, 'fbapi_comm', $meta_value); // записать количество комментариев Facebook для текущей страницы в произвольное поле WordPress
  if ($job==1) {
	$url = get_permalink($post_id);
	$tema = 'Новый комментарий';
	$eh2pok = pism_elem('shapka') . '<p>Поступил новый комментарий через виджет Фейсбук.</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. Если в тексте комментария встречается ссылка, то в теме письма ставится пометка [СПАМ]

Количество комментариев Facebook для текущей страницы записывается в произвольное поле WordPress — эти данные можно потом использовать для вывода точного количества комментариев на странице с учётом комментариев Facebook.

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

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

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

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

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

Копирование материалов разрешено только с указанием источника и прямой индексируемой ссылкой на оригинал.
Яндекс.Метрика
© 2016 - 2019 Хороший отзыв · Лично · Разумно · Честно