我们在社交网站活动时,当有新的消息网页上都会弹出一个小小的提示框,例如新浪微博,当有微博被评论时右上角会有提示,那么如何在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(‘
3、时时更新
我们希望在我们不触发任何动作的情况下,网页能自己自动判断是否有新的评论出现,如果有自己完成新的提示。
我采用了极其简单的方法,即用来setInterval
[code lang=”php” line=”1″]
setInterval(‘comment_ajax’,60000);
[/code]
规定每一分钟就执行一次comment_ajax函数,每次执行都会触发ajax,通过判断确定是否有新的评论,如果有的话,不仅会显示,而且还会更新,相反,如果所有的评论都被处理,那么它将不再显示了。