Пытаюсь реализовать ajax обновление о новом сообщении в чате, на иконках в нижнем уголке странице и в списке клиентов [userlist inpage="30" orderby="time_action" template="rows" usergroup="wp_capabilities:author" data="description, profile_fields" filters="0" order="DESC"]
bg_init_tim();
function bg_init_tim(){
jQuery(document).ready(function($) {
var data = {
action: 'my_action'
};
jQuery.post( myajax.url, data, function(response) {
if(data['user_id']['status'] == 0){
$.each(data/* ['user_id'] */,function(index,value){
$('#id'+value/* ['id'] */).append('');
}
});
});
setTimeout(function(){ bg_init_tim() }, 1000);
}
В бэкенде
add_action('wp_ajax_my_action', 'my_action_callback');
add_action('wp_ajax_nopriv_my_action', 'my_action_callback');
function my_action_callback() {
add_action('wp_footer','rcl_get_last_chats_box',10);
//как то получить массив и закодировать в JSON
wp_die();
}
Для вставки кода стоило воспользоваться кнопкой многострочный код. Как сейчас - его читать невозможно
Внутри функции зачем wp_footer?
Почитайте о том как строятся ajax запросы в вордпресс. Тут я вижу много пробелов
p.s. ajax запрос каждую секунду на всех страницах сайта ради получения нового сообщения - вордпресс не обладает таким запасом прочности. Именно поэтому в самом плагине этот функционал отсутствует. А проверяется новое сообщение только если ты на странице чата. И то сделана настройка в опциях допа чата позволяющая еще уменьшить время опроса. Так вероятность повалить сервер снижается. Подумайте - надо оно вам. 5 человек на сайте легко могут вам 500-е ошибки добавить.
Подглядеть можете в дополнении чата
Например тут /wp-recall/add-on/rcl-chat/actions_cron.php
функция rcl_chat_send_notify_messages
получает по крону раз в час непрочитанные сообщения и отправляет их на почту - вот вам готовый запрос к базе данных на выборку непрочитанных сообщений. Надо только текущего пользователя сообщения оставить. Все непрочитанные вам не нужны.
или в /wp-recall/add-on/rcl-chat/core.php
функция rcl_chat_noread_messages_amount
получает кол-во непрочитанных сообщений.
Начните с простого:
Потренируйтесь просто выполнять ajax запрос вернув просто текст периодично. Это апи вордпресс.
Как только у вас это выйдет - останется дело за выборкой из базы данных - но по примерам что я вам тут дал это будет сделать не сложно. Опять же связи тут с дополнением чата только название таблицы. Все равно придется делать через апи вордпресс - через $wpdb
т.е. разницы нет из какого плагина вы из БД данные вытаскиваете - реализация все равно будет используя доступное апи ВП
Вот так сделал - работает.
bg_init_tim(); function bg_init_tim(){ jQuery(document).ready(function($) { var data = { action: 'my_action', }; jQuery.ajax({ url: myajax.url, data:{ 'action':'my_action' }, dataType: 'JSON', success:function(response){ if(response) { $(".fa-commenting").remove(); $.each(response,function(index,value){ $('#id'+value).append('<i class="fa fa-commenting" aria-hidden="true"></i>'); $('#'+value).append('<i class="fa fa-commenting" aria-hidden="true"></i>'); }); } } }); }); setTimeout(function(){ bg_init_tim() }, 2000); } add_action( 'wp_enqueue_scripts', 'myajax_data', 99 ); function myajax_data(){ wp_localize_script('twentyseventeen-global', 'myajax', array( 'url' => admin_url('admin-ajax.php') ) ); } add_action('wp_ajax_my_action', 'my_action_callback'); add_action('wp_ajax_nopriv_my_action', 'my_action_callback'); function my_action_callback() { global $wpdb; $mess = $wpdb->get_results("SELECT * FROM ".RCL_PREF."chat_messages WHERE message_status='0' && private_key!='0' && message_time > date_sub('".current_time('mysql')."', interval 1 hour)"); if(!$mess) return false; $messages = array(); foreach($mess as $m){ $messages[] = $m->user_id; } $mes=json_encode($messages); echo $mes; wp_die(); }
Только id надо еще подписать \wp-recall\add-on\rcl-chat\index.php в 411 строке
Здравствуйте.
Здесь форум поддержки по вашим кастомизациям. Создавайте новую тему в этом разделе форума - показывайте что делаете. И задайте вопрос так, чтоб вас можно было понять - что вам нужно и зачем (сейчас не понятно).
Но для кастомизаций плагина нужны хотя бы базовые знания html, css, php и апи вордпресс.
Т.к. данный ресурс - не онлайн площадка для обучения азам программирования - элементарные вопросы решайте через гугл или на специализированных ресурсах где обучают новичков.
Тему закрываю - в чужих темах не пишем.