приятель пресс ajax уведомление о новом сообщении - PullRequest
0 голосов
/ 20 февраля 2012

Я работаю над одной темой для прессы и хочу показать количество непрочитанных сообщений через ajax.

У меня есть нижеприведенный код в function.php моей темы

<?php
function addMessageRefresh()
    {
    ?>
<script type="text/javascript">
    function getMessages(){
    jQuery('#user-messages span').text("Unread Messages: (<?php echo messages_get_unread_count(); ?>)");
     }
   setInterval("getMessages()", 10000);
</script>
    <?php
    }
add_action( 'wp_head', 'addMessageRefresh');
?>

это сработало.

, но показывается только число непрочитанных при загрузке страницы, но если пользователь получает какое-либо сообщение, оно не обновляется.

Основная цель этого скрипта - показать общее количествоКоличество непрочитанных сообщений, и оно должно обновляться через ajax. Если пользователь получает какое-либо сообщение, он должен показывать общее количество непрочитанных сообщений без перезагрузки страницы.

Спасибо

Ответы [ 3 ]

1 голос
/ 24 февраля 2012

как-то это ..

function getMessages(){
    jQuery.ajax({
        url: '../url.php'
        dataType: 'html',
        success: function (data) {
        jQuery('#user-messages span').text("Unread Messages: " + data);
    }}
    )
}

.. / url.php код

<?php echo messages_get_unread_count(); ?>
0 голосов
/ 27 февраля 2012

Ваш вопрос лежит в пределах:

jQuery('#user-messages span').text("Unread Messages: (<?php echo messages_get_unread_count(); ?>)");

Что происходит, когда страница загружается, PHP обрабатывает функцию messages_get_unread_count() и использует это значение для визуализации страницы. Оттуда сгенерированный JavaScript будет вызываться через ваш интервал, но у него будет статическое значение, определенное в вашей предварительно обработанной разметке.

Вам понадобится AJAX-вызов на URL, который вернет счетчик ваших сообщений.

Это функция, позволяющая получать обновленное количество сообщений.

function add_message_count_js() {
    ?>
    <script type="text/javascript">
        //<![CDATA[
        var msg_count;
        function updateMessages() {
            jQuery.ajax({
                type: 'POST',
                url: '<?php echo admin_url('admin-ajax.php'); ?>',
                data: {"action": "view_message_count"},
                success: function(data) {
                    jQuery('#user-messages span').text("Unread Messages: "+data);
                }
            });
            return false;
        }
        setInterval('updateMessages()', 10000);
        //]]>
    </script>
    <?php
}
add_action('wp_head', 'add_message_count_js');

Это добавит соответствующие хуки AJAX.

add_action('wp_ajax_view_message_count', 'view_message_count');
add_action('wp_ajax_nopriv_view_message_count', 'view_message_count');
function view_message_count() {
    if (is_user_logged_in())
        echo messages_get_unread_count();

    die();
}

Оба эти фрагмента должны находиться в вашем файле functions.php.

0 голосов
/ 24 февраля 2012

Есть несколько шагов, которые вам нужно сделать: 1) Поместите элемент, содержащий количество непрочитанных сообщений. Это должно быть добавлено к вашему шаблону.

<div id="unread_messages"></div>

2) Добавьте код javascript, который обновит значение вашего счетчика. Вы можете добавить его в свой шаблон или распечатать из хуков wp_head / wp_footer

<script type="text/javascript">
  function update_unread_count() {
    jQuery('#unread_messages').load(
      '<?php echo admin_url('admin-ajax.php'); ?>', 
      { 'action': 'get_unread_message_count' } 
    );
  }

  jQuery(document).ready(function() {
    // update every 15 seconds, after page loaded
    setInterval('update_unread_count()', 15000); 
  });
</script>

3) Зарегистрировать обработчик запросов ajax. Вы должны добавить эти строки в файл темы functions.php

function my_get_unread_message_count() {
  echo messages_get_unread_count();
  die();
}
add_action('wp_ajax_get_unread_message_count', 'my_get_unread_message_count');

Нечто подобное.

...