回看网站出现的最早出现的形式,就是以bbs的形式出现的,即发一篇文章,可以让别的用户回复,这样一个最初非常简单的形式,现在得到了众多扩展,但是所有的网站不管是门户网站、博客、商铺等等都可以发现他们共同的特点,那就是以bbs的最原始方式的多种体现。

所以,今天我们来说一说,如何将wordpress的原生评论机制,作为一个bbs来呈现。

我们的新版官网加入这一功能,可以提供给大家一个提问和交流的社区,那么,我们如果需要修改wordpress原生评论,需要怎么做呢?

下面我们来看一看论坛的基本形式:

1.注册用户可以发帖2.论坛的排序机制—— 有新评论的文章被顶到第一行

3.可以回帖,最新的回帖在第一行

4.显示发帖人和回帖人的信息(头像、昵称、描述等)

这样一看,wordpress的原生评论需要修改的地方就变成如下几个地方:

1.增加wordpress前端投稿功能

2.改进论坛区域的文章(帖子)排列机制——按照评论的新旧排列

3.回帖的样式修改(增加调用发帖人-回帖人的头像、名称等信息)

说了这么多,小编吧这次官网已经改造好的bss页面截图发一些,你就可以清晰的看到和原生评论有所不同的地方了。

改造你的wordpress原生评论为bbs

1.增加前端投稿功能

前端投稿功能,目前的网络上有很多,具体可以参考露兜博客的一篇文章  wordpress添加投稿功能

利用这篇文章制作一个投稿页面,这个功能的实现是利用wordpress的一个函数:

wp_insert_post

插入文章

你可以对其进行改造,默认的功能是会将用户的用户昵称、电子邮件和用户网站发送到正文,你可以将这些删除掉  ,具体可以将“添加表单处理代码”中的62行(详见露兜博客博文)

$post_content = '昵称: '.$name.'
Email: '.$email.'
blog: '.$blog.'
内容:
'.$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)) :?>

//楼主回复,可以使用图片,或者文字提示下

这样就能够把楼主的回复和其他人的回复区分开了。

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来控制一下文章的输出:

原理:加入到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进行讨论哦!~

(责任编辑:最模板)

wordpress 形式php,将wordpress原生评论改造成论坛形式相关推荐

  1. Element-UI checkbox 如何改造成只可单项选择

    Element UI  提供 checkbox 默认实现多选或者全选全不选择,RadioButton 实现单项选择功能,但是如果是一个列表的情况下,使用checkbox 的样式进行单选的情况还是很多的 ...

  2. php私密留言,WordPress站点增加私密留言评论功能的教程

    WordPress 站点的评论默认情况下都是公开的评论,也就是说只要是审核通过的评论,所有人(包括站长.留言者.游客等)都可以看到这条评论内容.如果我们想要实现只有留言者和站长看到的私密留言评论,那么 ...

  3. 带评论的php文章系统,启用Typecho原生评论系统替代多说

    2017年6月1日起,多说(duoshuo.com)社会化评论系统正式停止提供服务.拾肆自从转入Typecho以来一直未启用系统自带的评论系统,而使用了多说的评论系统. 采用多说可以不限于单独一个站点 ...

  4. Dubbo to Mesh 云原生架构改造方案解析

    作者 | 腾讯云泛互云原生团队 责编 | 屠敏 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) Dubbo 是一款高性能的 Java RPC 框架,它除了拥有卓越的 ...

  5. wordpress 数据库_在WordPress中使用数据库

    wordpress 数据库 Out of the box, WordPress provides tons of functions that can be used to interact with ...

  6. WordPress初学者入门教程-WordPress的设置

    本文源自:https://wpeyes.com/wordpress 在侧边栏中,你会看到一个项目 标签设置. 在设置中,有许多项. 重要提示:主题和插件可以向侧边栏菜单系统添加项目.如果你的菜单中有没 ...

  7. wordpress与dz_将WordPress与物联网集成

    wordpress与dz It's IoT Week at SitePoint! All week we're publishing articles focused on the intersect ...

  8. wordpress 多语言插件-wordpress 不同双语言三语言插件

    wordpress 多语言插件,wordpress双语插件对于wordpress多语言网站通常有两种形式,第一种是独立的网络语言,另一种是多种语言但是独立的网站.WordPress多语言插件 自动化的 ...

  9. unity android 分包,Unity以分包(obb)形式集成到安卓原生 我慢慢填坑

    Unity以分包(obb)形式集成到安卓原生 我慢慢填坑 Unity以分包(obb)形式集成到安卓原生 我慢慢填坑 工作中有需要将unity项目集成到安卓原生中,随着工作推进需要分包去发布到googl ...

最新文章

  1. Linux下分割与合并文件的方法
  2. ASP.NET AJAX文档-ASP.NET AJAX 概述[翻译](1)
  3. PHP用空格分割文本为数组的方法
  4. 9.2-3 pstree pgrep
  5. session 详解
  6. [JavaWeb-CSS]CSS概述
  7. C#如何[添加][删除][修改]XML中的记录
  8. android drawable 比例,Android中的Drawable基础与自定义Drawable
  9. sprintf()函数的用法
  10. app启动速度优化实践
  11. 文献解读:纵向数据的测量不变性和交叉滞后模型(一)
  12. python可以替代office吗_哪些办公软件可以完美替代 Microsoft Office?
  13. 做人,该善良时就善良,该勇敢时就要有勇气去对应
  14. javaeye上对李刚的书的差评
  15. 使用CSS实现悬停显示二维码
  16. php的表达爱意的一句代码,一句表达爱意的古词 最能表达爱的一句话
  17. 蜂鸟E203软件环境的搭建(一)
  18. mybatisplus+oracle,Springboot+MybatisPlus+Oracle实现主键自增的示例代码
  19. linux shell求最大公约数,shell求最大公约数
  20. 活动回顾|ShardingSphere X openGauss,将会产生怎样的化学反应?

热门文章

  1. 新浪短信WEBSERVICE--本文转载
  2. 安装activeperl遇到写入错误,无权限访问目录
  3. Flash 安装失败
  4. OneNote2007的另类体验像Google Earth一样浏览笔记
  5. 例16:最大公约数和最小公倍数。
  6. 网络安全:细致分析与防范策略
  7. 基频检测算法详细总结
  8. ASEMI代理Infineon英飞凌IPB60R099CP原厂MOS管
  9. Piwigo 一款开源的图片管理系统PHP源码
  10. 有哪些电脑软件堪称神器