wordpress即时消息提醒功能

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

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

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

<br /> require( dirname(__FILE__) . &#8216;/../../../wp-load.php&#8217; ); // 引入wordpress load,下面就可以使用wordpress核心功能<br /> if(is_user_logged_in()): // 用户在登录的情况下才提供提示信息,否则什么都不做<br />  $status = 0;<br />  $content = &#8221;;<br />  $comment_count = wp_count_comments();<br />  $comment_count = $comment_count-&gt;moderated;<br />  if($comment_count &gt; 0){<br />   $status = 1;<br />   $content = &#8216; </p>
<div><a href="http://www.weixing.io/'.admin_url('edit-comments.php').'" rel="external nofollow">&#8216;.$comment_count.&#8217;新评论</a></div>
<p>&#8216;;<br />  }<br />  $json = array(&#8216;status&#8217; =&gt; $status,&#8217;content&#8217; =&gt; $content);<br />  echo json_encode($json);<br /> endif;<br /> 

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

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

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

<br /> function comment_ajax(){<br />  var $url = $template_url + &#8216;/comment_tishi.php&#8217;;<br />  $.ajax({<br />   url : $url,<br />   type: &#8216;GET&#8217;,<br />   dataType : &#8216;json&#8217;,<br />   success : function(data){<br />    $(&#8216;#message-box&#8217;).remove();<br />    if(data.status == 1)$(&#8216;body&#8217;).append(&#8216; </p>
<div>&#8216; + data.content + &#8216;</div>
<p>&#8216;);<br />   }<br />  });<br /> }<br /> comment_ajax();//网页加载好之后就开始执行一次这个函数<br /> 

我们先创建一个函数,注意,函数中有一个变量$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

<br /> setInterval(&#8216;comment_ajax&#8217;,60000);<br /> 

规定每一分钟就执行一次comment_ajax函数,每次执行都会触发ajax,通过判断确定是否有新的评论,如果有的话,不仅会显示,而且还会更新,相反,如果所有的评论都被处理,那么它将不再显示了。

0

评论0

请先

没有账号? 注册  忘记密码?

社交账号快速登录