西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > wordpress教程 >

将wordpress原生评论改造成论坛形式

时间:2016-10-21 14:44来源:未知 作者:好模板编辑 点击:
回看网站出现的最早出现的形式,就是以bbs的形式出现的,即发一篇文章,可以让别的用户回复,这样一个最初非常简单的形式,现在得到了众多扩展,但是所有的网站不管是门户网站
回看网站出现的最早出现的形式,就是以bbs的形式出现的,即发一篇文章,可以让别的用户回复,这样一个最初非常简单的形式,现在得到了众多扩展,但是所有的网站不管是门户网站、博客、商铺等等都可以发现他们共同的特点,那就是以bbs的最原始方式的多种体现。
所以,今天我们来说一说,如何将wordpress的原生评论机制,作为一个bbs来呈现。
我们的新版官网加入这一功能,可以提供给大家一个提问和交流的社区,那么,我们如果需要修改wordpress原生评论,需要怎么做呢?
下面我们来看一看论坛的基本形式:
1.注册用户可以发帖2.论坛的排序机制—— 有新评论的文章被顶到第一行
3.可以回帖,最新的回帖在第一行
4.显示发帖人和回帖人的信息(头像、昵称、描述等)
 
这样一看,wordpress的原生评论需要修改的地方就变成如下几个地方:
1.增加wordpress前端投稿功能
2.改进论坛区域的文章(帖子)排列机制——按照评论的新旧排列
3.回帖的样式修改(增加调用发帖人-回帖人的头像、名称等信息)
说了这么多,小编吧这次官网已经改造好的bss页面截图发一些,你就可以清晰的看到和原生评论有所不同的地方了。
将wordpress原生评论改造成论坛形式
改造你的wordpress原生评论为bbs
1.增加前端投稿功能
前端投稿功能,目前的网络上有很多,具体可以参考露兜博客的一篇文章  wordpress添加投稿功能
利用这篇文章制作一个投稿页面,这个功能的实现是利用wordpress的一个函数:
wp_insert_post
   插入文章
你可以对其进行改造,默认的功能是会将用户的用户昵称、电子邮件和用户网站发送到正文,你可以将这些删除掉  ,具体可以将“添加表单处理代码”中的62行(详见露兜博客博文)
$post_content = '昵称: '.$name.'<br />Email: '.$email.'<br />blog: '.$blog.'<br />内容:<br />'.$content;
修改为:
$post_content = $content;
这样就可以只输出正文了
 
2.改造评论和发帖人
发帖人的帖子正文模块很容易解决,这个模块和wordpress的文章模块一样,不同的是,我们需要调用作者(发帖人)的信息,如头像、发帖人昵称、网站、发贴数量等等。
下面是调用作者信息的代码(php):
get_avatar( get_the_author_email(), 60 );//调用作者头像
get_the_author()//作者昵称
get_author_posts_url( get_the_author_meta( 'ID' )) ; //作者归档链接
echo the_author_posts();  //发帖数量
这样你就能轻松的调用好发帖人(楼主)的信息了
 
3.评论列表的改造
评论列表的改造也非常简单,使用wp_list_comments,网上有大量的可使用的列表资料,这里不做阐述
这里我们要说的是,需要判断一下,是否是楼主回复
function is_author_comment( $comment_ID = 0 ) {
$comment = get_comment( $comment_ID );
$authorid=get_the_author_meta( "id");
$admin_comment = false; //设置一个布尔类型的变量用于判断该留言的ID是否为楼主(作者)的回复
if($comment->user_id == $authorid){
$author_comment = true;
}
return$author_comment;
}
这段代码添加进到functions.php中
然后在wp_list_comments中找到一个合适的位置,写入判断:
<?php  if (is_author_comment($comment->comment_ID)) :?>
//楼主回复,可以使用图片,或者文字提示下
<?php endif; ?>
这样就能够把楼主的回复和其他人的回复区分开了。
 
4.帖子的排序问题
这些问题解决之后,最后解决一下排序的问题,我们想要像论坛一样,有人顶贴,帖子会被顶起来,这需要使用最后的评论时间来作为判断
将如下代码放入functions.php中
function comment_meta_update($comment_ID) {
// 发布新评论更新commentTime字段值
$comment = get_comment($comment_ID);
$my_post_id = $comment->comment_post_ID;
update_post_meta($my_post_id, 'commentTime', time());
}function comment_meta_delete($post_ID) {
// 删除文章同时删除commentTime字段
global $wpdb;
if(!wp_is_post_revision($post_ID)) {
delete_post_meta($post_ID, 'commentTime');
}
}
add_action('save_post', 'comment_meta_add');
add_action('delete_post', 'comment_meta_delete');
add_action('comment_post', 'comment_meta_update');
 
在论坛列表中,使用query_posts来控制一下文章的输出:
<?php$posts = query_posts($query_string . '&orderby=meta_value&showposts=10&meta_key=commentTime&order=DESC'); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
 
原理:加入到functions.php中的代码会再文章发布时候,自动添加一个自定义字段
commentTime
记录评论的时间,有新评论时会自动更新时间。下面使用
query_posts
  正是使用这一自定义栏目判断,来达到顶帖子的效果。
现在,你明白如何利用wordpress制作一个bbs吗?  当然,wordpress制作出来的是非常简单的bbs,小型的社区也基本上够用啦,并且,还可以扩展一下他的功能,比如安装一下会员相关插件,增加用户等级,称号,积分等等,又比如可以增加一个必须要回复才能显示的内容,这些都是可以达到的。
当然,昨天我发布的一篇文章也许对大家也有用,这里可以附带再说一下:如果你使用了多说,那么你改造的bbs也会被多说给覆盖掉,利用之前发布的代码,在文章插入时,自动关闭多说评论即可
在露兜的那篇文章中找到这段代码:
$status = wp_insert_post( $tougao );
在这段代码下面添加:
$status = wp_insert_post( $tougao );
add_post_meta($status, 'duoshuo_status', 'disabled');
即可在前端发布帖子时,自动关闭多说的评论了。
说了这么多,如果你有兴趣可以自己试一试,等到官网更新之后,欢迎来我们的bbs进行讨论哦!~
(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容