我正在制作一个好友新闻主题,并希望通过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更新意味着如果用户收到任何消息,它应该显示未读消息的总数而不重新加载页面。
由于
答案 0 :(得分:1)
不知何故..
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(); ?>
答案 1 :(得分:0)
您需要执行以下几个步骤: 1)放置包含未读消息计数的元素。这应该加到你的模板上。
<div id="unread_messages"></div>
2)添加更新计数值的javascript代码。您可以将其添加到模板中,也可以从wp_head / wp_footer hooks打印
<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');
类似的东西。
答案 2 :(得分:0)
你的问题在于:
jQuery('#user-messages span').text("Unread Messages: (<?php echo messages_get_unread_count(); ?>)");
正在做的是在加载页面时PHP处理messages_get_unread_count()
函数并使用该值来呈现页面。从那里生成的JavaScript将按您的间隔调用,但它将在您的预处理标记中定义一个静态值。
您需要对将返回邮件计数的网址进行AJAX调用。
这是允许您获取更新消息计数的功能。
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文件中。