Публикация в группе: Кастомизация WP-Recall и Wordpress

Обновил.

Теперь когда чат закрывается запросы на новые сообщения больше не будут отправляться. Так же для кнопки Чат теперь надо добавить атрибут data-chat-room = "имя комнаты".

Это можно использовать для того, что бы выводить разные чаты. Или, например, привязать имя комнаты к id текущей категории.

Наконец-то обновил wp-recall до последней версии, где появился полноценный чат.

Однако использовать отдельную страницу для чата не очень хочется, точнее пусть она будет, но лично мне удобнее что бы чат появлялся в модальном окне без перезагрузки страницы. А там уже, если надо, можно и ссылку на отдельную страницу с чатом вывести или отдавать таким образом чат только админу, а юзеры пусть идут на страницу... вариантов много.

Реализовать это очень просто, справится даже "ребенок".

 

1. Создаем кнопку для вывода чата

Нам необходимо сделать какую-либо кнопку у которой будет class="chat" - можете ее сделать через редактирование меню в админке, или ручками добавить на страницу. И data-chat-room="имя комнаты"

По клику на эту кнопку будет загружаться чат.

Пример:

<div class="chat" data-chat-room="my-chat">Чат</div>

 

2. Добавить скрипт

jQuery(document).ready(function(){
  jQuery(".chat").click(function(){
    var element = this;
    var room = jQuery(this).data('chat-room');
      jQuery.post("/wp-admin/admin-ajax.php", { action : 'chat', room : room }, function(result){
      jQuery("#rcl-popup").html(result);
      jQuery("#rcl-overlay").toggle();
    });
  });
});

Его можно добавить в желаемый js файл или, например в футер (заключив в <script> </script>)

Как не трудно догадаться после клика по объекту с классом .chat сработает экшн wp_ajax_chat (который мы добавим ниже) и нам вернется html код чата, который добавится в #rcl-popup а #rcl-overlay станет видимым.

3. Добавить функцию обработчик ajax запроса

Добавляем в functions.php

add_action('wp_ajax_chat', 'chat_callback');
function chat_callback() {
$room = $_POST['room'];
$script = "<script type='text/javascript'>
jQuery(document).ready(function(){
jQuery('#rcl-overlay').click(function(){
	rcl_chat_clear_beat('".rcl_chat_token_encode($room)."');
});
});
</script>";
echo $script.do_shortcode('[ rcl-chat chat_room="'.$_POST['room'].'" userslist="1" ]');
die();
}

Примечание: уберите пробел после первой и до второй квадратной скобки, иначе тут то же выводится чат :))

тут думаю то же все понятно. Если приходит ajax запрос с action = chat выполняется функция chat_callback.

в do_shortcode обычный шорткод чата, тот что вы используете на странице для вывода чата.

 

Вот собственно и все, вот пример как это выглядит:

 

  

1

Автор публикации

не в сети 1 день

Preci

1 497
Telegram: https://t.me/preci_123
Комментарии: 498Публикации: 83Регистрация: 11-11-2014Продаж/Покупок: 0/0