评论框输入QQ获取头像和昵称这个功能在很多emlog博客上都兴起了,不过我发现wordpress圈里还不太常见,所以把这个功能做到wordpress上,由于每个人的主题评论表单结构节点名称都不太一样,所以根据本教程你不一定能立刻达到想要的效果,要仔细看我下面代码注释。首先我们先看效果图吧: WordPress评论框输入QQ获取头像和昵称步骤 步骤一:评论表单插入QQ字段 这个网上能找到代码,前端找到你主题输出昵称、邮箱、网址的表单结构依样画葫芦添加input标签,比如我的表单结构是: 昵称 id“yuaocomtauthor”class“bsbb”name“author”type“text”value“”size“30”maxlength“245”required“required”placeholder“必填” 添加QQ结构照着复制就行了,昵称等文本改成QQ,注意name属性值要改成newfieldqq,下面传参要用到。 前端加了input,后端就要添加字段用来存储前端提交到数据库的QQ信息。下面的代码添加到主题的functions。php里面,注意看注释。 数据库插入评论表单的qq字段 addaction(‘wpinsertcomment’,’inlojvsqlinsertqqfield’,10,2); inlojvsqlinsertqqfield(commentID,commmentdata){ isset(POST〔‘newfieldqq’〕)?POST〔‘newfieldqq’〕: updatecommentmeta(commentID,’newfieldqq’,qq);是表单name值,也是存储在数据库里的字段名字 } 后台评论中显示qq字段 addfilter(‘manageeditcommentscolumns’,‘addcommentscolumns’); addaction(‘managecommentscustomcolumn’,‘outputcommentsqqcolumns’,10,2); addcommentscolumns(){ columns〔‘newfieldqq’〕(‘QQ号’);新增列名称 } outputcommentsqqcolumns(columnname,){ switch(){ “newfieldqq”: 这是输出值,可以拿来在前端输出,这里已经在钩子managecommentscustomcolumn上输出了 getcommentmeta(commentid,‘newfieldqq’,); } } 步骤二:核心代码输入qq号实时获取昵称和头像 思路是这样的: 访客在QQ表单填入qq号之后,鼠标离开,表单失去焦点的时候,用ajax方法向后端发送get请求,将qq号传给后端API文件进行处理,处理完毕再把信息返回到前端,依靠js把信息(昵称和头像)输出到前端评论表单上。而当访客评论完毕,刷新页面时,我仍然希望昵称和头像显示在评论表单上,这时候就要用到cookie操作。 下面是前端处理的js代码(需要jQuery库支持,请仔细看注释): 下面是后端处理的php代码(需用到两个api) 步骤三:让QQ头像显示在评论列表和后台评论上 一般情况下,wordpress的评论头像默认是gravatar,所以我们用getavatar过滤器来对默认头像的调用方式进行改造。 将以下代码加入到主题的functions。php里面 修改后台头像 若有qq字段则显示qq头像,若没有则显示 INLOJVhttp:www。inlojv。com addfilter(‘getavatar’,‘inlojvchangeavatar’,10,3); inlojvchangeavatar(avatar){ if(getcommentmeta(commentID,‘newfieldqq’,)){ getcommentmeta(commentID,‘newfieldqq’,); filegetcontents(‘http:ptlogin2。qq。comgetface?appid1006102imgtype3uin’。qqnumber); pregmatch(‘http:(。?)t’,qqavatar,m);匹配http:和之间的字符串 ‘’; }else{ ; } } 这样基本就大功告成了,若你有一定的代码基础,也可以对js的处理部分进行与主题相匹配的改造,效果见INLOJV评论表单。