填写您的邮件地址,订阅我们的精彩内容:

wordpress即时消息提醒功能

654

我们在社交网站活动时,当有新的消息网页上都会弹出一个小小的提示框,例如新浪微博,当有微博被评论时右上角会有提示,那么如何在wordpress中增加这一提示功能呢?特别是如何增加文章被评论或回复时的提示功能呢?我们将用jQuery和wp_count_comments()函数合作来实现这一功能。

1、撰写一个客户端php文档作为消息信息页面

我们在主题目录下创建一个comment_tishi.php,并部署下面的代码:

[code lang=”php” line=”1″]
require( dirname(__FILE__) . ‘/../../../wp-load.php’ ); // 引入wordpress load,下面就可以使用wordpress核心功能
if(is_user_logged_in()): // 用户在登录的情况下才提供提示信息,否则什么都不做
$status = 0;
$content = ”;
$comment_count = wp_count_comments();
$comment_count = $comment_count->moderated;
if($comment_count > 0){
$status = 1;
$content = ‘

‘;
}
$json = array(‘status’ => $status,’content’ => $content);
echo json_encode($json);
endif;
[/code]

这段代码通过wp_count_comments()函数获取博客目前的新评论,不过这种方法只针对没有审核过的评论有效,如果需要对所有评论都启用该功能,需要调用数据库,并对评论做时间判断。

2、创建基于jQuery的ajax异步请求代码,并将新的信息返回给页面

有了上面创建好的页面,接下来我们就要从这个页面获取信息,并显示在页面上了。

[code lang=”php” line=”1″]
function comment_ajax(){
var $url = $template_url + ‘/comment_tishi.php’;
$.ajax({
url : $url,
type: ‘GET’,
dataType : ‘json’,
success : function(data){
$(‘#message-box’).remove();
if(data.status == 1)$(‘body’).append(‘

‘ + data.content + ‘

‘);
}
});
}
comment_ajax();//网页加载好之后就开始执行一次这个函数
[/code]

我们先创建一个函数,注意,函数中有一个变量$template没有给出具体值,你可以自己定义,它代表你的主题目录的访问路径(即<?php bloginfo(‘template_url’); ?>)。

在函数中ajax的success最后,我们用了$(‘body’).append(‘<div id=”message-box”>’ + data.content + ‘</div>’);,是将这个返回的信息放在一个#message-box的div中,并置于网页文档的末尾,我们可以利用position:absolute对它进行绝对定位,放在显眼的地方。不过你也可以设计你自己的放置方式和位置。这一切都靠append的对象和css来完成。

3、时时更新

我们希望在我们不触发任何动作的情况下,网页能自己自动判断是否有新的评论出现,如果有自己完成新的提示。

我采用了极其简单的方法,即用来setInterval
[code lang=”php” line=”1″]
setInterval(‘comment_ajax’,60000);
[/code]
规定每一分钟就执行一次comment_ajax函数,每次执行都会触发ajax,通过判断确定是否有新的评论,如果有的话,不仅会显示,而且还会更新,相反,如果所有的评论都被处理,那么它将不再显示了。

下面我简单说几句