wordpress留言板comments.php添加自定义字段,如何向WordPress评论表单添加字段

WordPress评论表单默认只接受昵称、电子邮箱、网址和评论内容这四个字段,如果你想让用户输入一些额外的信息,就得想办法拓展评论表单的功能。用户评论存储在wp_comments表中,每个默认字段也是这个表的一个字段,添加额外字段肯定不能通过修改这个数据表实现。

wp_commentmeta

wp_comments也有一个与之对应的meta表,叫做wp_commentmeta。posts可以用post meta存储一些额外信息,comment也可以用comment meta存储信息。因此,我们可以用wp_commentmeta表存储要添加到评论表单中的内容。

举个实际的例子,向评论表单添加新浪微博ID字段(用ID而不是昵称,是因为Sola还没研究过新浪API

e143.gif),用户输入新浪微博ID以后,就可以在评论中显示“加关注”按钮,人们点击这个按钮就可以关注评论者了,这样也许能鼓励评论者发布一些有用吸引人的评论。

数据将会以如下形式存储在wp_commentmeta表单中

f26cf32d347716ab32cb4bd0b9f82770.png

如何向评论表单添加自定义字段

这个是老生常谈了,可以使用filter comment_form_default_fields或者comment_form_defaults。如果你坚持要知道为什么可以用这两个,推荐去读一下源代码

wp-includes/comment-template.php 1535行(apply_filters( 'comment_form_default_fields', $fields ))和1549行($args = wp_parse_args( $args, apply_filters( 'comment_form_defaults', $defaults ) );)

添加微博字段的代码如下,写到主题的functions.php中,再次膜拜强大的functions.phpadd_filter('comment_form_default_fields','comment_form_add_weibo');

function comment_form_add_weibo($fields) {

$label = __( 'Weibo ID' );

$value = isset($_POST['weibo']) ? $_POST['weibo'] : false;

$fields['weibo'] =<<

{$label}

HTML;

return $fields;

}

存储数据

通过action wp_insert_comment实现,代码如下,同样放到functions.php中add_action('wp_insert_comment','wp_insert_weibo',10,2);

function wp_insert_weibo($comment_ID,$commmentdata) {

$weibo = isset($_POST['weibo']) ? $_POST['weibo'] : false;

update_comment_meta($comment_ID,'_weibo',$weibo);

}

添加上面两段代码以后,就可以查看效果了,以twentyeleven主题为测试对象(wp > 3.0)

caf310ced8d4d4594e16947a53edd565.png

当然Sola小偷懒了一下,第一段代码中的

被换成了

不然是无法实现与其它字段相同的效果的,除非去改一下CSS,不过懒人嘛

e147.gif

填好表单提交以后微博ID就会被保存到wp_commentmeta表单中,如本文第一张图片所示。

如何调用comment meta信息

调用代码如下$weibo_id = get_comment_meta($comment_ID,'_weibo',true);

为了能看到效果,修改一下twentyeleven的functions.php中wp_list_comments()函数的回调函数twentyeleven_comment(),在这个函数中输出新浪微博“加关注”按钮。需要添加的代码如下

<?php $weibo_id = get_comment_meta($comment->comment_ID,'_weibo',true);

if( !empty($weibo_id) ):?>

效果如下图所示

2b7935a756c4dadd4108f3b51d9a0801.png

但在把微博ID换成微博昵称之前,这段代码没有实际用途,对用户很不友好,要换成用户昵称也是可以的,需要获得新浪API使用权,通过API调用将用户的昵称转换成ID,再用这段代码输出。

资源链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值