wordpress 形式php,将wordpress原生评论改造成论坛形式
回看网站出现的最早出现的形式,就是以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原生评论改造成论坛形式相关推荐
- Element-UI checkbox 如何改造成只可单项选择
Element UI 提供 checkbox 默认实现多选或者全选全不选择,RadioButton 实现单项选择功能,但是如果是一个列表的情况下,使用checkbox 的样式进行单选的情况还是很多的 ...
- php私密留言,WordPress站点增加私密留言评论功能的教程
WordPress 站点的评论默认情况下都是公开的评论,也就是说只要是审核通过的评论,所有人(包括站长.留言者.游客等)都可以看到这条评论内容.如果我们想要实现只有留言者和站长看到的私密留言评论,那么 ...
- 带评论的php文章系统,启用Typecho原生评论系统替代多说
2017年6月1日起,多说(duoshuo.com)社会化评论系统正式停止提供服务.拾肆自从转入Typecho以来一直未启用系统自带的评论系统,而使用了多说的评论系统. 采用多说可以不限于单独一个站点 ...
- Dubbo to Mesh 云原生架构改造方案解析
作者 | 腾讯云泛互云原生团队 责编 | 屠敏 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) Dubbo 是一款高性能的 Java RPC 框架,它除了拥有卓越的 ...
- wordpress 数据库_在WordPress中使用数据库
wordpress 数据库 Out of the box, WordPress provides tons of functions that can be used to interact with ...
- WordPress初学者入门教程-WordPress的设置
本文源自:https://wpeyes.com/wordpress 在侧边栏中,你会看到一个项目 标签设置. 在设置中,有许多项. 重要提示:主题和插件可以向侧边栏菜单系统添加项目.如果你的菜单中有没 ...
- wordpress与dz_将WordPress与物联网集成
wordpress与dz It's IoT Week at SitePoint! All week we're publishing articles focused on the intersect ...
- wordpress 多语言插件-wordpress 不同双语言三语言插件
wordpress 多语言插件,wordpress双语插件对于wordpress多语言网站通常有两种形式,第一种是独立的网络语言,另一种是多种语言但是独立的网站.WordPress多语言插件 自动化的 ...
- unity android 分包,Unity以分包(obb)形式集成到安卓原生 我慢慢填坑
Unity以分包(obb)形式集成到安卓原生 我慢慢填坑 Unity以分包(obb)形式集成到安卓原生 我慢慢填坑 工作中有需要将unity项目集成到安卓原生中,随着工作推进需要分包去发布到googl ...
最新文章
- oracle创建简单的包
- 最详细的JavaWeb开发基础之java环境搭建(Windows版)
- 2018.08.04 cogs2633. [HZOI 2016]数列操作e(线段树)
- GDOI2018-《被虐记》
- Fence(CF-324F)
- 一维数组元素倒置 c语言,实例12 数组中元素的倒置.pdf
- [Vue warn]: Error in render: “TypeError: Cannot read properties of undef
- 办公软件 -- Office 365免费下载安装
- 阿里全国脱贫攻坚先进-万祥军:谋定中国农民丰收节交易会
- spring boot大学体育赛事管理系统 毕业设计-附源码180923
- 中山マミ - 咲く未来
- 問題の解決策 [USACO18JAN]Lifeguards P(题解)
- (fym)ssm基于web的教务管理系统 毕业设计261620
- ccd摄像机基础知识
- 清除 thinkphp跟php的 X-Powered-By
- (二)CT医学影像的窗高窗位、CT值(Hu值)
- 太阳能热水器两芯液位温度检测
- SM30表维护自动更新值
- 【STM32H7教程】第78章 STM32H7的QSPI总线基础知识和HAL库API
- 鲁棒性Robustness